>  기사  >  백엔드 개발  >  PHP에서 생성된 잘못된 파일 이름 문제를 해결하는 방법

PHP에서 생성된 잘못된 파일 이름 문제를 해결하는 방법

藏色散人
藏色散人원래의
2021-04-02 09:07:522401검색

PHP에서 생성된 잘못된 파일 이름에 대한 해결 방법: 1. 모든 + 기호를 "%20"으로 바꿉니다. 2. "header("Content-type: application/vnd.ms-excel");"을 추가합니다. "filename=xxx" 양쪽에 공백이 있습니다.

PHP에서 생성된 잘못된 파일 이름 문제를 해결하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

잘못된 PHP 내보내기 파일 이름에 대한 해결 방법

문제 시나리오:

통계 데이터에 모든 곳에서 Excel 기능이 제공되므로 작곡가를 사용하여 phpspreadsheet 구성 요소를 설치하고 데이터 처리 및 내보내기를 수행합니다. ASCII 이름의 파일 이름이 나타나면 모든 것이 정상적으로 내보내지지만 중국어 파일 이름이 나타나면 내보낸 파일 이름이 깨집니다.

해결책은 여기에 직접 게시됩니다:

1. 파일 이름 처리

PHP의 urlencode 기능은 다양한 공백 문자를 + 기호로 변환하기 때문에 이 + 기호는 Chrome이든 Firefox이든 동일합니다. 이스케이프되세요

여기서 모든 + 기호를 다시 %20으로 바꾸세요

$file_name = '导出文件.xls'; // 这是原本要导出的文件名
$encoded_filename = url_encode($file_name);// 将文件名进行urlencode转码
$encoded_filename = str_replace('+', '%20', $encoded_filename);

2. 헤더 파일: 파일 유형 선언

내보낸 파일이 특정 엑셀 유형이 아닌 경우 파일 헤더 1번

I을 사용하세요. 엑셀에서 xls 형식으로 테이블을 내보냈기 때문에 파일 헤더 2번

// 文件头No.1: 告诉浏览器这里要有一个文件流输出
header("Content-type: application/octet-stream");
// 文件头No.2: 告诉浏览器这里要输出一个excel文件
header("Content-type: application/vnd.ms-excel");

을 사용했습니다. 헤더 파일: 파일 이름 설명을 다운로드하세요

이 단계가 핵심입니다. 주의할 점 두 가지

파일 이름인지 여부= xxx 또는 파일 이름*=xxx, 등호

파일 이름*=xxx 양쪽에 공백이 없어야 합니다. 이 구성 항목은 실제로 문자 집합(utf8), 언어(비어 있음) 및 Urlencoded 파일 이름의 세 부분으로 구성됩니다. , 여기서 언어는 작은따옴표로 묶인 빈 문자열이며 세 부분 사이에 공백이 있어서는 안 됩니다.

header('Content-Disposition: attachment; filename="foo-%c3%a4.xls"; filename*=UTF-8\'\'foo-%c3%a4.xls');

위 코드를 사용하여 각각 Chrome, Firefox, 360, ie11을 사용하여 테스트했습니다. 모든 테스트가 잘 작동했습니다. 그것이 당신에게도 도움이 되기를 바랍니다.

【추천 학습: PHP 비디오 튜토리얼

위 내용은 PHP에서 생성된 잘못된 파일 이름 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.