1, php download schematic diagram
2. File Download Source code:
1234567891011121314151617181920212223242526 |
<?php
$file_name
=
"哈哈.jpg"
;
//需要下载的文件
$file_name
=iconv(
"utf-8"
,
"gb2312"
,
"$file_name"
);
$fp
=
fopen
(
$file_name
,
"r+"
);
//下载文件必须先要将文件打开,写入内存
if
(!
file_exists
(
$file_name
)){
//判断文件是否存在
echo "文件不存在"
;
exit
();
}
$file_size
=
filesize
(
"a.jpg"
);
//判断文件大小
//返回的文件
Header(
"Content-type: application/octet-stream"
);
//按照字节格式返回
Header(
"Accept-Ranges: bytes"
);
//返回文件大小
Header(
"Accept-Length: "
.
$file_size
);
//弹出客户端对话框,对应的文件名
Header(
"Content-Disposition: attachment; filename="
.
$file_name
);
//防止服务器瞬时压力增大,分段读取
$buffer
=1024;
while
(!
feof
(
$fp
)){
$file_data
=
fread
(
$fp
,
$buffer
);
echo $file_data
;
}
//关闭文件
fclose(
$fp
);
?>
|
3, file encoding problem resolution method:
If the file name is Chinese, PHP function does not recognize the Chinese file name, generally if the program is encoded as Utf-8,php's function is older, can only recognize the gb2312 encoded in Chinese, so the Chinese with Iconv ("Original Code", "to turn to the code", "to transcode the string") function can be transcoded.
For example, to transcode a string from Utf-8 to gb2312
$file _name=iconv ("Utf-8", "gb2312", "$file _name");
How PHP files are downloaded