在服务端压缩图片下载后,如何删除掉临时生成的文件呢

问题描述

protectedvoidbtUpload_Click(objectsender,EventArgse){stringtempfilename=toimages();if(tempfilename!=""){//stringfilename=Server.MapPath("tempimages").ToString();stringfilename="DowndLoad/"+tempfilename+"/"+tempfilename+".rar";//改变ContentTypeResponse.ContentType="application/force-download";Response.AddHeader("Content-Disposition","attachment;filename="+filename);Response.WriteFile(filename);//File.Delete(rarFileToDecompress);stringpath=tempfilename;if(System.IO.Directory.Exists(path))System.IO.Directory.Delete(path,true);}else{Page.ClientScript.RegisterClientScriptBlock(GetType(),"PopupScript","<script>alert('图片下载出错,请联系管理员!');</script>",false);return;}}privatestringtoimages(){try{StringstrID="-1";stringtempnamepath=System.Guid.NewGuid().ToString();stringpath=Server.MapPath("DowndLoad")+"\"+tempnamepath;ArrayListlist=newArrayList();string[]strlist=HdnSelectedValues.Value.Split(newchar[1]{','});foreach(stringtempstrsinstrlist){//CheckBoxmyYesCheckbox=EditDataGrid.Items[i].FindControl("CheckBox1")asCheckBox;//if(myYesCheckbox==null)//continue;//strID=strlist[i].ToString().Trim();//if(myYesCheckbox.Checked)//{//strID=EditDataGrid.Items[i].Cells[6].Text.ToString().Trim();//strID="B02008072883";if(tempstrs.Equals("")){}else{strID=tempstrs.ToString().Trim();stringconnStr=ConfigurationSettings.AppSettings["ImageDB"];SqlConnectionconns=newSqlConnection(connStr);Stringsql="SELECT[PartRecordid],[Images],[ImageSNID],[qianzhong],[Valid]FROM[ImageDB].[dbo].[tdImages]whereImageSNID='"+strID+"'";SqlCommandcommand=newSqlCommand(sql,conns);conns.Open();SqlDataReaderdr=command.ExecuteReader();dr.Read();byte[]imgdata=(byte[])dr["Images"];FileStreamfsFile=null;if(!System.IO.Directory.Exists(path))System.IO.Directory.CreateDirectory(path);fsFile=File.Create(path+"\"+strID+".jpeg");try{fsFile.Write(imgdata,0,imgdata.Length);}catch{//unabletowritetothefile..fsFile.Close();}fsFile.Close();fsFile.Dispose();dr.Close();conns.Close();}}string[]FilePathS=newstring[2];FilePathS[0]=path;//待压缩的文件目录FilePathS[1]=path+"\"+tempnamepath+".rar";//生成的目标文件ZipClass.ZipFileDictory(FilePathS);returntempnamepath;}catch{return"";}}上面是一下下载按钮,点击后会在服务器的固定目录下生成一个临时的以GUID命名的文件夹,等用户下载完压缩的图片包后,如何把临时生成的文件夹删除呢文件夹里包含有从数据库二进制生成的图片和一个压缩图片的.RAR,现在要把这个文件夹里面的东西全删除掉,前提是等用户下载完后

解决方案

解决方案二:
File.Delete(文件物理路径);
解决方案三:
删除文件后删除文件夹
解决方案四:
你可以试下直接flush出文件流,而不是返回文件回来,这样的逻辑比较简单
解决方案五:
问题是怎么删除呢,在哪里删除了,关键是要等用户下载完才能删除,在什么地方删除才适合呢,如果在用户没有下载完之前删除,那下载就会出错哦
解决方案六:
放在finally里面删除try{}catch{}finally{if(System.IO.Directory.Exists(path))System.IO.Directory.Delete(path,true);}
解决方案七:
怎么压缩流呢,我现在的做法是先去数据库把二进制转成本成图片,然后压缩再下载,如果可以直接压缩从数据库中读出来的二进制流那就更好了
解决方案八:
引用5楼freewind0521的回复:

放在finally里面删除try{}catch{}finally{if(System.IO.Directory.Exists(path))System.IO.Directory.Delete(path,true);}

这种方法也不行的,会先删除掉文件夹的,这样网站就死在哪里了,下载不了
解决方案九:
各位有什么好办法呢,搞了一天都没做出来,急死人呀

时间: 2024-10-28 09:33:19

在服务端压缩图片下载后,如何删除掉临时生成的文件呢的相关文章

Java服务端压缩GZIP IOS解压问题

问题描述 Java服务端压缩GZIP IOS解压问题 在Java端用什么方法加压GZIP 在IOS端能解压出来 IOS用libz库方式解压的 求大神解答..找了很多种压缩方式都不行 IOS一直解压不出来 解决方案 iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题 解决方案二: 一般都是用标准的gzip压缩格式 各种平台都是一样的 你要看看java是否压缩正确了 用其它工具能否解压成功

android开发-想用socket从服务端发送图片到客户端,但一直出错,求原因

问题描述 想用socket从服务端发送图片到客户端,但一直出错,求原因 开发-想用socket从服务端发送图片到客户端,但一直出错,求原因-socket客户端和服务端"> 如图所示,本人新人,求大神解答 解决方案 空指针从无,TestActivity的64行 解决方案二: 空指针 socket 不能执行关闭操作(其实是不能操作任何操作) 最好在操作前增加判断:if(null != socket) {} 在 {} 中做处理. 解决方案三: 应该是创建socket失败了. socket不能放在

PC_android使用socket通信,要求PC服务端发送图片给手机客户端,并在手机显示

问题描述 PC_android使用socket通信,要求PC服务端发送图片给手机客户端,并在手机显示 本人根据"http://sishuok.com/forum/posts/list/1995.html"此网址,做了一个socket通信的例子,但是通信成功了,图片在手机中显示不出来,求解答 解决方案 http://www.cnblogs.com/tt_mc/archive/2010/06/04/1751260.html 解决方案二: http://blog.csdn.net/tobac

C# ASP.NET查找数据生成Excel时提示保存,但保存失败,重新下载后保存成功但是打开时提示文件已经损坏!Excel2010,请指教,谢谢!

问题描述 C#ASP.NET查找数据生成Excel时提示保存,但保存失败,重新下载后保存成功但是打开时提示文件已经损坏!Excel2010,请指教,谢谢!我的下载方法代码如下:publicvoidDownLoad(stringExcelName,stringFileName){try{if(!String.IsNullOrEmpty(ExcelName)||!String.IsNullOrEmpty(FileName)){Response.Charset="GB2312";Respon

向服务端发送文件byte流,用java写的服务端要怎么接收这个byte流并转化为相关文件保存

问题描述 以下是客户端代码privateStringuploadToServerReturnFileName(StringurlStr,byte[]fileData){OutputStreamouts=null;ObjectOutputStreamobjout=null;BufferedReaderbufferread=null;try{URLurl=newURL(urlStr);URLConnectioncon=url.openConnection();con.setDoOutput(true

iOS 基于服务端的App下载打包教程

打包服务端可以下载App包有两种方式: 第一种:利用Xcode直接打包,步骤如下: 第一步:利用Xcode的存档功能,打包. 第二步:选择Save for Enterprise or Ad Hoc Deployment 接着选择开发版本的证书后就生成ipa包 第三步:选择App对应的开发版本的证书: 注意:如果你加入需要安装的新设备,你需要手动刷新现在看到的证书. 第二种:手动压缩的方式. 第一步:编译 IOS Device 版本的app 第二步:新建一个目录:Payload, 将生成的app文

Android 从本地服务端导入图片消息到数据库,图片不显示

问题描述 导入方法EMMessage message = EMMessage.createSendMessage(EMMessage.Type.IMAGE);message.setChatType(ChatType.Chat);ImageMessageBody body = new ImageMessageBody();body.setFileName("test1.jpg");body.setRemoteUrl("https://a1.easemob.com/easemob

想用socket从服务端发送图片到客户端,但一直出错,求原因

问题描述 如图所示本人新手,求大神解答.. 解决方案 解决方案二:调试看看不.

【JAVA秒会技术之玩转图片】图片下载和等比或指定大小压缩快速实现

JAVA图片下载和等比或指定大小压缩工具类 话不多,直接上代码: package com.netease.test; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.