您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计813个文字,预计阅读时间需要4分钟。
一、设计多图打包下载逻辑:
1.+1,如果需要下载腾讯云等资源服务器的图片,+2,我们先下载远程图片到本地临时文件夹,+3,然后压缩临时文件夹,+4,压缩完成后删除临时文件夹。
一,设计多图片打包下载逻辑:
1,如果是要拉取腾讯云等资源服务器的图片,
2,我们先把远程图片拉取到本地的临时文件夹,
3,然后压缩临时文件夹,
4,压缩完删除临时文件夹,
5,返回压缩完给用户,
6,用户就去请求下载接口,当下载完后,删除压缩包
二,如下代码,ImageUtil
using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Web; namespace Common { /// <summary> /// 要引用 /// System.IO.Compression.FileSystem /// System.IO.Compression /// </summary> public static class ImageUtil { #region 图片打包下载 /// <summary> /// 下载图片到本地,压缩 /// </summary> /// <param name="urlList">图片列表</param> /// <param name="curDirName">要压缩文档的路径</param> /// <param name="curFileName">压缩后生成文档保存路径</param> /// <returns></returns> public static bool ImagePackZip(List<string> urlList, string curDirName, string curFileName) { return CommonException(() => { //1.新建文件夹 if (!Directory.Exists(curDirName)) Directory.CreateDirectory(curDirName); //2.下载文件到服务器临时目录 foreach (var url in urlList) { DownPicToLocal(url, curDirName + "\\"); Thread.Sleep(60);//加个延时,避免上一张图还没下载完就执行下一张图的下载操作 } //3.压缩文件夹 if (!File.Exists(curFileName)) ZipFile.CreateFromDirectory(curDirName, curFileName); //压缩 //异步删除压缩前,下载的临时文件 Task.Run(() => { if (Directory.Exists(curDirName)) Directory.Delete(curDirName, true); }); return true; }); } /// <summary> /// 下载压缩包 /// </summary> /// <param name="targetfile">目标临时文件地址</param> /// <param name="filename">文件名</param> public static bool DownePackZip(string targetfile, string filename) { return CommonException(() => { FileInfo fileInfo = new FileInfo(targetfile); HttpResponse rs = System.Web.HttpContext.Current.Response; rs.Clear(); rs.ClearContent(); rs.ClearHeaders(); rs.AddHeader("Content-Disposition", "attachment;filename=" + $"{filename}"); rs.AddHeader("Content-Length", fileInfo.Length.ToString()); rs.AddHeader("Content-Transfer-Encoding", "binary"); rs.AddHeader("Pragma", "public");//这两句解决cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); var isOk = ImageUtil.ImagePackZip(urlList, DownPicpath + curDirName, $"{DownPicpath}/{curFileName}"); var json = JsonConvert.SerializeObject(new { isok = isOk.ToString(), curFileName = curDirName }); return Content(json); } } /// <summary> /// 下载压缩包 /// </summary> /// <param name="curFileName">文件名</param> /// <returns></returns> public ActionResult DownePackZip(string curFileName) { try { curFileName = curFileName + ".zip"; var DownPicpath = System.Web.HttpContext.Current.Server.MapPath("/DownPicPackge"); var flag = ImageUtil.DownePackZip(DownPicpath + "/" + curFileName, curFileName); ////flag返回包之后就可以删除包,因为包的已经转为流返回给客户端,无需读取源文件 if (flag && Directory.Exists(DownPicpath)) System.IO.File.Delete(DownPicpath + "/" + curFileName); return Content(flag.ToString()); } catch (Exception ex) { return Content(ex.Message); } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计813个文字,预计阅读时间需要4分钟。
一、设计多图打包下载逻辑:
1.+1,如果需要下载腾讯云等资源服务器的图片,+2,我们先下载远程图片到本地临时文件夹,+3,然后压缩临时文件夹,+4,压缩完成后删除临时文件夹。
一,设计多图片打包下载逻辑:
1,如果是要拉取腾讯云等资源服务器的图片,
2,我们先把远程图片拉取到本地的临时文件夹,
3,然后压缩临时文件夹,
4,压缩完删除临时文件夹,
5,返回压缩完给用户,
6,用户就去请求下载接口,当下载完后,删除压缩包
二,如下代码,ImageUtil
using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Web; namespace Common { /// <summary> /// 要引用 /// System.IO.Compression.FileSystem /// System.IO.Compression /// </summary> public static class ImageUtil { #region 图片打包下载 /// <summary> /// 下载图片到本地,压缩 /// </summary> /// <param name="urlList">图片列表</param> /// <param name="curDirName">要压缩文档的路径</param> /// <param name="curFileName">压缩后生成文档保存路径</param> /// <returns></returns> public static bool ImagePackZip(List<string> urlList, string curDirName, string curFileName) { return CommonException(() => { //1.新建文件夹 if (!Directory.Exists(curDirName)) Directory.CreateDirectory(curDirName); //2.下载文件到服务器临时目录 foreach (var url in urlList) { DownPicToLocal(url, curDirName + "\\"); Thread.Sleep(60);//加个延时,避免上一张图还没下载完就执行下一张图的下载操作 } //3.压缩文件夹 if (!File.Exists(curFileName)) ZipFile.CreateFromDirectory(curDirName, curFileName); //压缩 //异步删除压缩前,下载的临时文件 Task.Run(() => { if (Directory.Exists(curDirName)) Directory.Delete(curDirName, true); }); return true; }); } /// <summary> /// 下载压缩包 /// </summary> /// <param name="targetfile">目标临时文件地址</param> /// <param name="filename">文件名</param> public static bool DownePackZip(string targetfile, string filename) { return CommonException(() => { FileInfo fileInfo = new FileInfo(targetfile); HttpResponse rs = System.Web.HttpContext.Current.Response; rs.Clear(); rs.ClearContent(); rs.ClearHeaders(); rs.AddHeader("Content-Disposition", "attachment;filename=" + $"{filename}"); rs.AddHeader("Content-Length", fileInfo.Length.ToString()); rs.AddHeader("Content-Transfer-Encoding", "binary"); rs.AddHeader("Pragma", "public");//这两句解决cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); urlList.Add("cdn.duitang.comimg.558idc.com/uploadfile/item/201409/08/20140908155026_RdUwH.thumb.700_0.jpeg"); var isOk = ImageUtil.ImagePackZip(urlList, DownPicpath + curDirName, $"{DownPicpath}/{curFileName}"); var json = JsonConvert.SerializeObject(new { isok = isOk.ToString(), curFileName = curDirName }); return Content(json); } } /// <summary> /// 下载压缩包 /// </summary> /// <param name="curFileName">文件名</param> /// <returns></returns> public ActionResult DownePackZip(string curFileName) { try { curFileName = curFileName + ".zip"; var DownPicpath = System.Web.HttpContext.Current.Server.MapPath("/DownPicPackge"); var flag = ImageUtil.DownePackZip(DownPicpath + "/" + curFileName, curFileName); ////flag返回包之后就可以删除包,因为包的已经转为流返回给客户端,无需读取源文件 if (flag && Directory.Exists(DownPicpath)) System.IO.File.Delete(DownPicpath + "/" + curFileName); return Content(flag.ToString()); } catch (Exception ex) { return Content(ex.Message); } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

