作者airtsubasa (偽學姊)
看板PHP
標題[請益] generate file from DB image column
時間Sat Apr 2 01:06:55 2016
老舊的系統是將附件檔案存放置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://webptt.com/m.aspx?n=bbs/PHP/M.1459530417.A.636.html
※ 編輯: airtsubasa (114.40.203.30), 04/02/2016 01:09:13
1F:→ weiclin: php不是只能在網頁執行喔,也可當成一般script在本機執行 04/02 01:31
2F:→ weiclin: 所以你只要寫一個將資料抓出來存成檔案的php程式 04/02 01:32
3F:→ weiclin: 然後放上server那台機器跑一下就行了 04/02 01:33
4F:→ weiclin: 就像批次檔那樣,這樣講能理解嗎? 04/02 01:34
5F:→ airtsubasa: 不能直接將這個binary fwrite成一個檔案嗎? 04/02 03:02
6F:→ 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
7F:→ weiclin: 可以呀.. 04/02 03:54
8F:→ weiclin: file_put_contents($dst_file, $binary_data)類似這樣 04/02 03:58
9F:→ airtsubasa: 謝謝,不過我有試過這個,不行的樣子,忘記error mess 04/02 08:08
10F:→ airtsubasa: age了,要等上班日再試了 04/02 08:08
11F:→ peterlai: 多筆壓縮下載會比較好吧! 04/04 22:47
12F:→ weiclin: 突然想問,你是想讓這些附件另存到server還是client? 04/05 05:48
13F:→ MOONRAKER: 明顯是要存到server。寫檔案有錯誤有時是權限沒開。 04/05 05:57
14F:推 GALINE: 可以用 sys_get_temp_dir() 取得暫存檔路徑之後存進去...? 04/05 17:53
15F:→ airtsubasa: 附件是要存到server 04/05 17:55
16F:→ airtsubasa: 權限的話是指資料夾權限嗎?若是的話,有檢查過,都有 04/05 17:57
17F:→ airtsubasa: 開了 04/05 17:57
18F:→ airtsubasa: 謝謝,今天已解決 04/06 19:55