作者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/cn.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