[請益] 透過header下載的影音檔及壓縮檔造成損壞

看板PHP作者 (Claire)時間14年前 (2010/03/15 11:25), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
在寫程式時發現 如果上傳影音檔或壓縮檔 利用 header("Content-Disposition: attachment; filename=$name"); header("Content-Type: application/octet-stream"); 下載 會造成檔案損壞 可是如果使用超連結下載就不會有這問題 (確定檔案是OK 無損壞的 是利用header下載才造成損壞) 請問該如何解決這方面的問題呢??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.30.237

03/15 11:28, , 1F
有沒有用g-zip那一類的做壓縮?
03/15 11:28, 1F

03/15 11:29, , 2F
沒有 就只單純rar 跟 avi檔
03/15 11:29, 2F

03/15 11:30, , 3F
有我看過網路上說透過ftp下載 會造成損壞
03/15 11:30, 3F

03/15 11:30, , 4F
所我想請問是否有解決方法@@
03/15 11:30, 4F

03/15 11:37, , 5F
你怎麼把檔案讀出來的, 要用binary mode呀...
03/15 11:37, 5F
binary mode 不懂耶XD 就是利用header詢問是否下載呀 (精華區有原文 z-5-6) <? $name = $_GET["name"]; header("Content-Disposition: attachment; filename=$name"); header("Content-Type: application/octet-stream"); echo file_get_contents("../upfiles/imp_file/$name"); ?> 這是我修改後的程式碼 可是我發現 如果不透過header下載就不會損壞

03/15 11:48, , 6F
是不是還需要一個 Content-Length ??
03/15 11:48, 6F
請問該加在哪呢@@? ※ 編輯: claire0810 來自: 61.220.30.237 (03/15 11:52)

03/15 13:40, , 7F
錢面有沒有BOM?
03/15 13:40, 7F

03/15 13:42, , 8F
拿hex editor開來看看是哪裡不同
03/15 13:42, 8F

03/15 13:43, , 9F
是有多byte還是少byte還是錯byte
03/15 13:43, 9F
我有大致找到原因喔 知識+有一個是說 我下載檔案的時候,檔案都成功的下載下來,可是問題就來了! 這些下載的檔案(各式各 樣的:jpg,doc,mp3...等),都開不了。我用notepad開這些檔案內容來看,才發現到所有 我下載下來的檔案,內容都自動被加了<html></html> 這個標籤。 我照他的方式 用notepad打開來看 編碼的確被改過了 等於說 我用header載的檔案 並不是原本的那個檔案 而是另外被編碼的檔案 ※ 編輯: claire0810 來自: 61.220.30.237 (03/15 13:54)
文章代碼(AID): #1BdQYCKM (PHP)