Php sample code for file download and support for Chinese file names
/*----------------
- * $ FileName is the file name, required
- * $ FilePath is the file path. optional. it can be a relative or absolute path.
- * @ Path can only consist of English letters and data, and cannot contain Chinese characters
- * @ Edit finishing: bbs.it-home.org
- ------------------*/
-
- Header ("Content-type: text/html; charset = utf-8 ");
- If (strlen ($ FileName) <= 3) {echo "Download failed: your downloaded file information is incorrect"; return ;}
- $ FileName = iconv ("UTF-8", "gb2312", $ FileName); // convert the file name format to prevent Chinese garbled characters
- // Start to determine the path
- If (! Is_null ($ FilePath) & strlen ($ FilePath)> 1 ){
- If (substr ($ FilePath,) = '/') {// Determine whether the path is an absolute path
- $ FilePath = $ _ SERVER ['document _ root']. $ FilePath;
- }
- If (substr ($ FilePath,-1 )! = "/") {// Check whether the end is/
- $ FilePath = $ FilePath .'/';
- }
- If (is_numeric (strpos ($ FilePath, ": \") {// check whether the path is absolute
- $ FilePath = str_replace ("/", "\", $ FilePath );
- }
- } Elseif (strlen ($ FilePath) = 1 & $ FilePath! = "/"){
- $ FilePath = $ FilePath ."/";
- } Else {
- $ FilePath = "";
- }
- If (! File_exists ($ FilePath. $ FileName )){
- Echo "Download failed: the file to be downloaded is not found"; return;
- }
- /*-------------
- Send download-related header information
- ------------- = */
- Header ("Content-type: application/octet-stream ");
- Header ("Accept-Ranges: bytes"); // returns the value in bytes.
- Header ("Accept-Length: $ FileSize"); // returns the file size.
- Header ("Content-Disposition: attachment; filename =". $ FileName); // The pop-up dialog box on the client, with the corresponding file name
/*-------------
- Start download
- ------------- = */
- $ FileSize = filesize ($ FilePath. $ FileName );
- $ File = fopen ($ FilePath. $ FileName, "r"); // open the File
- $ FileBuff = 512;
- While ($ FileSize> = 0 ){
- $ FileSize-= $ FileBuff;
- Echo fread ($ File, $ FileBuff );
- }
- Fclose ($ File );
- }
- ?>
|