PHP實作多種格式檔案下載並解決亂碼問題
這幾天寫項目,遇到一個問題,一般的文件下載還好說,但是如果是中文且有多種格式的文件下載就比較棘手,調了很久的BUG,
終於完成,其中需要注意以下幾點:
1.對於文件名是中文的文件,要記得轉碼,防止中文亂碼的發生,因為大部分的主機的編碼是GB2312的,而我們用的是UTF-8,
所以在操作之前要用iconv()函數進行轉碼,防止找不到文件而報錯。
2.需要對所要下載的檔案的格式進行判斷,根據格式再寫header()函數。
具體代碼如下:
<?php header("Content-type:text/html;charset=utf-8"); $filename = "大学英语选课说明.docx"; //文件名 $filename = iconv("utf-8","gb2312//IGNORE",$filename); //转码 $file = "upload/".$filename; //文件路径 $len = filesize($file); //文件大小 $file_extension = strtolower(substr(strrchr($filename,"."),1)); //文件后缀名 switch( $file_extension ) //判断文件类型 { case "pdf": $ctype="application/pdf"; break; case "exe": $ctype="application/octet-stream"; break; case "zip": $ctype="application/zip"; break; case "docx": case "doc": $ctype="application/msword"; break; case "xls": $ctype="application/vnd.ms-excel"; break; case "ppt": $ctype="application/vnd.ms-powerpoint"; break; case "gif": $ctype="image/gif"; break; case "png": $ctype="image/png"; break; case "jpeg": case "jpg": $ctype="image/jpg"; break; case "mp3": $ctype="audio/mpeg"; break; case "wav": $ctype="audio/x-wav"; break; case "mpeg": case "mpg": case "mpe": $ctype="video/mpeg"; break; case "mov": $ctype="video/quicktime"; break; case "avi": $ctype="video/x-msvideo"; break; case "php": case "htm": case "html": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break; default: $ctype="application/force-download"; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Type: $ctype"); $header="Content-Disposition: attachment; filename=".$filename.";"; header($header); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); readfile($file); ?>
對於適配不同瀏覽器,避免發生中文亂碼錯誤,本人在網上找到一段代碼,可以避免,代碼如下:
沒有用這段程式碼的原因是上面我寫的程式碼我試了一下如:Firefox,IE,Opera,360等這些瀏覽器,沒有發生因為瀏覽器問題
產生的亂碼錯誤,我認為,轉碼後中文亂碼的問題基本上就解決了。
本人經驗,僅供參考!
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

【SpringBoot】透過Feign呼叫傳遞Header中參數如何透過Feign傳遞Header參數問題描述我們在SpringCloud中使用Feign請求另一個服務的Api介面時,有將Header中參數傳遞下去的需求,如果不做特殊處理,就會將Header中的參數遺失。解決方案方案一:透過@RequestHeader(name="headerName")來傳遞例如:Feign定義如下@FeignClient(name="service-name")pub

linux的header是指在文件或資料流中的開頭部分,用於包含關於內容的元數據,透過正確地編寫和使用Header文件,開發者能夠更好地利用系統資源,提高程式碼的可讀性和可維護性。

php header實作跳轉的方法:1、使用「Header("Location:$url");」語法實作跳轉;2、使用if判斷式實作跳轉,其跳轉語句如「if($_COOKIE[" u_type"]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');」。

PHP是一種功能強大的程式語言,可以用來創建動態網站和Web應用程式。其中一個最強大的功能之一是PHP的header()方法。在本文中,我們將探討如何使用PHP的header()方法來調整網頁。

區別:1、head標籤用於定義文檔頭部,它是所有頭部元素的容器,而header標籤用於定義文檔的頁眉(介紹資訊);2、瀏覽器都支援head標籤,而舊版本瀏覽器皆不支援header標籤,需要IE9+以上瀏覽器才能支援header標籤。

上個月推出 HMD Skyline(亞馬遜售價 499 美元)時,它有兩種顏色:霓虹粉和扭曲黑。現在,第三種顏色加入了藍色托帕石的行列。 HMD Global 也宣布了 PH 的官方案例

PHP檔案下載函數大全:readfile、header、Content-Disposition等函數的檔案下載實例分析檔案下載是Web應用程式中必不可少的功能之一,而PHP作為一種廣泛使用的Web開發語言,提供了多種實作文件下載的函數和方法。本文將介紹PHP常用的檔案下載函數,包括readfile、header、Content-Dispo

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code
