看板 PHP 關於我們 聯絡資訊
老舊的系統是將附件檔案存放置db裡(ms sql 2005), 其欄位型態為 image 目前能力頂多做到將其欄位 select 出來後, 透過header再儲存檔案, (約有上千筆,總不可能一筆一筆把欄位抓出來,然後透過瀏覽器下載...) php有辦法將這些 binary 資料存成各個檔案嗎? (檔案類型有 doc,xls,xlsx,docx,pdf,jpg,png,gif,bmp...蠻多種的) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.203.30 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1459530417.A.636.html ※ 編輯: airtsubasa (114.40.203.30), 04/02/2016 01:09:13
weiclin: php不是只能在網頁執行喔,也可當成一般script在本機執行 04/02 01:31
weiclin: 所以你只要寫一個將資料抓出來存成檔案的php程式 04/02 01:32
weiclin: 然後放上server那台機器跑一下就行了 04/02 01:33
weiclin: 就像批次檔那樣,這樣講能理解嗎? 04/02 01:34
airtsubasa: 不能直接將這個binary fwrite成一個檔案嗎? 04/02 03:02
airtsubasa: 其實現在就是卡在該怎麼把binary直接變檔案而已 04/02 03:03
手邊沒code, 稍微打一下 $sql = "SELECT files, file_name FROM formattach WHERE formkeyid='xxx'; ... ... $binary_data = odbc_binmode($files,ODBC_BINMODE_PASSTHRU); ... ... header('Content-Disposition:attachment;filename='.$filename); echo $binary_data; ob_flush(); 這樣透過瀏覽器打開是會跳出下載視窗,打開檔案也是正確的 但不知道能不能直接讓它寫成檔案就好? ※ 編輯: airtsubasa (114.40.203.30), 04/02/2016 03:26:51
weiclin: 可以呀.. 04/02 03:54
weiclin: file_put_contents($dst_file, $binary_data)類似這樣 04/02 03:58
airtsubasa: 謝謝,不過我有試過這個,不行的樣子,忘記error mess 04/02 08:08
airtsubasa: age了,要等上班日再試了 04/02 08:08
peterlai: 多筆壓縮下載會比較好吧! 04/04 22:47
weiclin: 突然想問,你是想讓這些附件另存到server還是client? 04/05 05:48
MOONRAKER: 明顯是要存到server。寫檔案有錯誤有時是權限沒開。 04/05 05:57
GALINE: 可以用 sys_get_temp_dir() 取得暫存檔路徑之後存進去...? 04/05 17:53
airtsubasa: 附件是要存到server 04/05 17:55
airtsubasa: 權限的話是指資料夾權限嗎?若是的話,有檢查過,都有 04/05 17:57
airtsubasa: 開了 04/05 17:57
airtsubasa: 謝謝,今天已解決 04/06 19:55