作者kisha024 (4545454554)
看板C_Sharp
标题[问题] 一次下载多笔资料库的image资料
时间Fri May 20 15:18:02 2016
各位好 我用的资料库是Microsoft SQL Server
我用类似下面的语法可以把某笔image资料 下载成一个档案
http://goo.gl/2bWGL4
但这样每次只能下载一个档案
请问 有办法一次下载多笔吗? 或者是一次下载多笔档案所压缩而成的zip档
谢谢
---------------------------------------------------
byte[] xfile = null;
string docupath = Request.PhysicalApplicationPath;
xfile = wc.DownloadData(docupath + "uploads\\qrcode.png");
string xfileName = System.IO.Path.GetFileName
(docupath + "uploads\\qrcode.png");
HttpContext.Current.Response.AddHeader("content-disposition",
"attachment;filename=" + HttpContext.Current.Server.UrlEncode(xfileName));
HttpContext.Current.Response.ContentType = "application/octet-stream";
//二进位方式
HttpContext.Current.Response.BinaryWrite(xfile); //内容转出作档案下载
HttpContext.Current.Response.End();
----------------------------------------------------------------
我後来使用DotNetZip来压缩档案
https://dotnetzip.codeplex.com/
右边是官方提供的一些 C# Examples
https://goo.gl/FNjqug
作法大致如下 先宣告一个MemoryStream
MemoryStream ms = new MemoryStream();
再宣告一个ZipFile 透过AddEntry 把从资料库捞出的档案加进去ZipFile
接着用Save把压缩档存到一开始宣告的MemoryStream中
ZipFile zip = new ZipFile());
zip.AddEntry("档名",stream或byte[]); // stream或byte[]就是从资料库捞出的档案
zip.Save(ms);
最後透过Response.BinaryWrite 把一开始宣告的MemoryStream下载下来
Response.BinaryWrite(ms.ToArray());
以上供有相同问题的人参考
谢谢大家帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.81.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1463728684.A.825.html
1F:→ VVll: 你可以把图档转base64去存在DB内 存NoSQL也是不错的选择 05/21 03:22
2F:→ VVll: 然後写个WS去串连DB资料 最後你看你要取单张 还是多张压缩 05/21 03:23
3F:→ VVll: 当然你也可以不用这麽麻烦 直接先把图档都取出来放在记忆体 05/21 03:24
4F:→ VVll: 然後再转换後做压缩 然後下载 05/21 03:25
5F:→ kisha024: 谢谢 如果是後面那种做法 有程式码范例可供我参考吗? 05/21 17:23
6F:→ kisha024: 或者是关键字 我再自己去google 05/21 17:25
7F:→ ssccg: 你要先看懂你这段程式的意思,倒数第二行是把HttpResponse( 05/21 19:08
8F:→ ssccg: 下载的档案)存到xfile(实体档案) 05/21 19:08
9F:→ ssccg: ↑应该说用xfile写入 05/21 19:11
10F:→ ssccg: 所以你要下载一个zip就是你要先另外把多个实体档案读进 05/21 19:11
11F:→ ssccg: memory,再做成一个压缩档,再拿来用就好了 05/21 19:12
12F:→ ssccg: 至於怎麽把档案从DB读出来,那就要看你怎麽存、怎麽连了 05/21 19:16
※ 编辑: kisha024 (140.127.81.14), 06/09/2016 18:08:00