电脑系统怎么打包下载

发布时间: 2023-04-16 09:28 阅读: 文章来源:转载
1、前言

最近没什么假期,但是却比以前还忙!工作、工作、工作,就像赶集似的,聚在一起。这个上海啥时候才能解封困在这里暗无天日的。早点解封出去看看想见的人的人,做做该做的事。工作中有那么一个需求客户想要通过自己选择列表的checkbox然后下载所选列表里面的图片,图片我们是存在图片服务器的,下载需要下载图片的一个压缩包zip。

2、思路

因为图片是在图片服务器中的,而部署程序的又是另一台服务器,所以我们先要把所选的图片从图片服务器下载在程序部署的服务器上面,然后压缩这个文件夹返回一个下载链接到客户端。

3、代码

public object DownBatchImg(){//返回格式object? ret = new();try{// 这里定义了4个图片,号分割第一个是文件名,后面是图片的网络路径List imgList = new(){"wyywx.jpg,http://www.yijianlan.com/images/wyywx.jpg","xylwx.jpg,http://www.yijianlan.com/images/xylwx.jpg","wyy2x.jpg,http://www.yijianlan.com/images/wyywx.jpg","xyl3x.jpg,http://www.yijianlan.com/images/xylwx.jpg"};//定义下载的链接string retPath = #34;{Request.Scheme}://{Request.Host.Host}:{Request.Host.Port}/UploadFilesDown/BatchImgDown.zip";//下载图片文件存放路径 不能跟 返回的下载zip路径是同一个目录string savePath = #34;{_env.WebRootPath}/UploadFilesTepm/";//zip存放路径绝对路径string path = #34;{ _env.WebRootPath}/UploadFilesDown/BatchImgDown.zip";//之前有下载过的就把之前的删除了if (System.IO.File.Exists(path))System.IO.File.delete(path);//创建文件夹 下载图片的文件夹if (!Directory.Exists(savePath))Directory.CreateDirectory(savePath);//创建文件夹 返回压缩路径if (!Directory.Exists(#34;{ _env.WebRootPath}/UploadFilesDown/"))Directory.CreateDirectory(#34;{ _env.WebRootPath}/UploadFilesDown/");//循环下载图片foreach (string it in imgList){//取出文件名跟网络路径var itList = it.Split(‘,‘).ToList();//去除所有""itList.RemoveAll(x => x == "");//文件名 wyywx.jpgstring fileName = itList[0];//文件网络路径 http://www.yijianlan.com/images/wyywx.jpgstring item = itList[1];//网路请求 习惯用HttpClientHttpClient client = new();//读取文件流Stream? stream = client.GetStreamAsync(item).Result;FileStreamResult? fils = File(stream, "application/vnd.android.package-archive", Path.GetFileName(item));string pathLast = savePath + Path.GetFileName(fileName);//存放文件绝对路径跟文件名using (FileStream fs = new(pathLast, FileMode.Create)){//下载图片fils.FileStream.CopyTo(fs);}}//压缩下载图片所在的文件夹ZipFile.CreateFromDirectory(savePath, path);//压缩成功就删除下载图片的文件夹if (Directory.Exists(savePath))Directory.delete(savePath, true);ret = new{code=200,msg="下载打包成功",data= retPath};}catch (Exception ex){ret = new{code = 500,msg = "系统异常"+ex.Message,};}return ret;}

第一个下载链接必须是当前程序部署的服务器,包括端口信息,当然程序的中间件访问静态文件要加上去app.UseStaticFiles();

这里需要注意的就是 下载的文件夹跟 打包的文件夹一定不能在同一个文件夹下面操作,会报 IO 异常的。

•••展开全文
相关文章