2017-03-17 68 views
1

我想要将图像上传到我的服务器文件夹并将其调整大小后,从垃圾文件夹中删除图像。但后来我收到这条消息,它不让我从垃圾文件夹中删除图像。我该如何解决这个问题?该进程无法访问该文件,因为它正在被另一个进程asp.net c#使用?

if (FileUpload1.HasFile) 
{ 
    long fileSize = FileUpload1.FileContent.Length; 
    double sizeinBytes = fileSize * 0.001; 
    FileUpload1.SaveAs(Server.MapPath("~/junk/" + FileUpload1.FileName)); 
    string filepath = Server.MapPath("~/junk/" +FileUpload1.FileName); 

    System.IO.FileStream fs = System.IO.File.OpenRead(filepath); 
    byte[] data = new byte[fs.Length]; 
    fs.Read(data, 0, data.Length); 

    System.IO.MemoryStream ms = new System.IO.MemoryStream(data); 
    System.Drawing.Image image = System.Drawing.Image.FromStream(ms); 
    Bitmap resizedimage = ResizeImage(image, 500, 500); 
    resizedimage.Save(Server.MapPath("~/images/" + FileUpload1.FileName + ".jpeg")); 
    Image1.ImageUrl = "~/images/" + FileUpload1.FileName; 
    var filePath = Server.MapPath("~/junk/" + FileUpload1.FileName); 
    if (File.Exists(filePath)) 
    { 
     File.Delete(filePath); 
    } 
} 
+3

关闭和处置删除操作前,您的FileStream(FS)。或者使用“使用”语句。 – Manoj

+0

@Manoj - 谢谢。这解决了问题 –

回答

3

你已经完成时,你的封装文件流如下图所示,使其得到处理:

using(FileStream fs = System.IO.File.OpenRead(filepath)) 
{ 
    //do stuff 
} 

//delete 
0
if (FileUpload1.HasFile) 
      { 
       long fileSize = FileUpload1.FileContent.Length; 
       double sizeinBytes = fileSize * 0.001; 
       FileUpload1.SaveAs(Server.MapPath("~/junk/" + FileUpload1.FileName)); 
       string filepath = Server.MapPath("~/junk/" + FileUpload1.FileName); 

       using (System.IO.FileStream fs = System.IO.File.OpenRead(filepath)) 
       { 
        byte[] data = new byte[fs.Length]; 
        fs.Read(data, 0, data.Length); 

        System.IO.MemoryStream ms = new System.IO.MemoryStream(data); 
        System.Drawing.Image image = System.Drawing.Image.FromStream(ms); 
        Bitmap resizedimage = ResizeImage(image, 500, 500); 
        resizedimage.Save(Server.MapPath("~/images/" + FileUpload1.FileName + ".jpeg")); 
       } 
       Image1.ImageUrl = "~/images/" + FileUpload1.FileName; 
       var filePath = Server.MapPath("~/junk/" + FileUpload1.FileName); 
       if (File.Exists(filePath)) 
       { 
        File.Delete(filePath); 
       } 
      } 
相关问题