[請益] generate file from DB image column

看板PHP作者 (偽學姊)時間8年前 (2016/04/02 01:06), 8年前編輯推噓1(1017)
留言18則, 5人參與, 最新討論串1/1
老舊的系統是將附件檔案存放置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

04/02 01:31, , 1F
php不是只能在網頁執行喔,也可當成一般script在本機執行
04/02 01:31, 1F

04/02 01:32, , 2F
所以你只要寫一個將資料抓出來存成檔案的php程式
04/02 01:32, 2F

04/02 01:33, , 3F
然後放上server那台機器跑一下就行了
04/02 01:33, 3F

04/02 01:34, , 4F
就像批次檔那樣,這樣講能理解嗎?
04/02 01:34, 4F

04/02 03:02, , 5F
不能直接將這個binary fwrite成一個檔案嗎?
04/02 03:02, 5F

04/02 03:03, , 6F
其實現在就是卡在該怎麼把binary直接變檔案而已
04/02 03:03, 6F
手邊沒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

04/02 03:54, , 7F
可以呀..
04/02 03:54, 7F

04/02 03:58, , 8F
file_put_contents($dst_file, $binary_data)類似這樣
04/02 03:58, 8F

04/02 08:08, , 9F
謝謝,不過我有試過這個,不行的樣子,忘記error mess
04/02 08:08, 9F

04/02 08:08, , 10F
age了,要等上班日再試了
04/02 08:08, 10F

04/04 22:47, , 11F
多筆壓縮下載會比較好吧!
04/04 22:47, 11F

04/05 05:48, , 12F
突然想問,你是想讓這些附件另存到server還是client?
04/05 05:48, 12F

04/05 05:57, , 13F
明顯是要存到server。寫檔案有錯誤有時是權限沒開。
04/05 05:57, 13F

04/05 17:53, , 14F
可以用 sys_get_temp_dir() 取得暫存檔路徑之後存進去...?
04/05 17:53, 14F

04/05 17:55, , 15F
附件是要存到server
04/05 17:55, 15F

04/05 17:57, , 16F
權限的話是指資料夾權限嗎?若是的話,有檢查過,都有
04/05 17:57, 16F

04/05 17:57, , 17F
開了
04/05 17:57, 17F

04/06 19:55, , 18F
謝謝,今天已解決
04/06 19:55, 18F
文章代碼(AID): #1M_ggnOs (PHP)