[請益] header下載多個檔案

看板PHP作者 (fefeking)時間9年前 (2016/03/22 11:51), 9年前編輯推噓5(504)
留言9則, 4人參與, 最新討論串1/1
如題,新手到不行的問題... 我想要將 sever上的pdf檔案資料,按照順序排出並且用 checkbox來標明 然後在使用上可以勾選想要的檔案作為下載。 所以我寫了一個 PHP程式 將以選好的 ID(尋找pdf檔用)以post丟入程式 轉成對應pdf的檔名後以header下載。 問題來了: 假如只點選一個檔案的話 程式可以安然的下載pdf。 但是我復選checkbox 卻只會下載第一個pdf.. 但是我將header部分的成是拿掉..改為只show 選取的檔名,卻又都可以顯示 我只能猜想..在header執行的時候網頁轉去其他地方造成 ID被洗掉? 以下附上程式,希望有人可以幫忙 <?php foreach($_POST['select'] as $id => $item ){ $select_id[] = $id ; } require_once("dbconnect.php"); foreach($select_id as $ID) { $paper_search_str = "SELECT bibtext, label, title FROM archive WHERE paper_id =".$ID ; $paper_result = mysql_query($paper_search_str); while($rows = mysql_fetch_array($paper_result)){ $label = $rows["label"]; $title = $rows["title"]; } $filename= $label.'-'.$title.".pdf" ;//對應檔名 dp($filename) ; //下載的指令..假如不用改為下一行只顯示 就可以多個檔名都顯示 //echo $filename.';'.'<br>' ; } mysql_close(); ?> <? function dp($filename){ header('Content-Type: application/pdf'); header('Content-Disposition: attachment; filename='.$filename); readfile('./file_dir/'.$filename); exit(); } ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.103.227 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1458618693.A.DCE.html ※ 編輯: fefeking (140.109.103.227), 03/22/2016 11:53:21

03/22 14:53, , 1F
多檔先壓成一個zip一次抓呢?
03/22 14:53, 1F

03/22 14:54, , 2F
一般一個link對一個檔案,要多個window.open :)
03/22 14:54, 2F
回應一下..我的database是在 mySQL底下,嘗試了用PHP內建的 ZipArchive 跟 Pclzip 都不成功,連基本的壓縮同資料夾底下的 txt file都不行。我不清楚問題在哪 持續嘗試中..

03/22 14:55, , 3F
可能送 header 和檔案後,伺服器就把回應送出去了
03/22 14:55, 3F
※ 編輯: fefeking (140.109.103.227), 03/22/2016 16:51:49

03/23 00:27, , 4F
exit的時候程式就會停止執行,直接送response出去
03/23 00:27, 4F

03/23 00:32, , 5F
然後http一次只能送一個檔案,包成zip會比較好
03/23 00:32, 5F

03/23 00:34, , 6F

03/23 10:32, , 7F
建議用外部指令zip.exe,找找static版的
03/23 10:32, 7F

03/23 10:36, , 8F
ZipArchive 要注意寫法,小心太大檔爆ram
03/23 10:36, 8F

03/23 15:46, , 9F
感謝以上的意見 所以http一次送一個檔案這情況是必然的
03/23 15:46, 9F
文章代碼(AID): #1MyC55tE (PHP)
文章代碼(AID): #1MyC55tE (PHP)