问题描述
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);}
这种方法也不行的,会先删除掉文件夹的,这样网站就死在哪里了,下载不了
解决方案九:
各位有什么好办法呢,搞了一天都没做出来,急死人呀