正在使用的文件 - 无法删除或替换 - ASP.Net

时间:2015-07-31 14:56:29

标签: c# asp.net

我需要更换服务器中的图片,用户将从列表框中选择一张图片然后他将从他的PC中选择一张图片,然后他将点击“替换”按钮来执行该过程,此外,上传的文件将调整为旧版本文件的维度。在此调整大小后,上传的文件应删除,新图像应保存在服务器上(覆盖在列表框中选择的图像)。这是替换按钮的代码背后:

protected void Button1_Click(object sender, EventArgs e)
{
    // Save Selected Picture into Server
    string file = Server.MapPath("~/Resources/").ToString() + UploadPic.PostedFile.FileName.ToString();
    UploadPic.PostedFile.SaveAs(file);
    // Resize The Picture in Server
    Bitmap image = new Bitmap(file);
    Bitmap picture = new Bitmap(ListBox1.SelectedItem.Value);
    image = ResizeImage(image, picture.Width, picture.Height);
    // Saving the New Picture in Server
    File.Delete(file);
    image.Save("~/Resources/" + Path.GetFileName(ListBox1.SelectedItem.Value));
}

但似乎两个上传的文件和从列表框中选择的图像正在使用中,我尝试处理了很多东西,如ListBox,UploadControl,图片等。但是没有找到一个有效的解决方案。 File.Delete将提供正在使用的"文件"错误 image.save将提供" GDI +接口"错误,表示正在使用另一个具有相同名称的文件。

任何帮助都是真正的赞赏

1 个答案:

答案 0 :(得分:1)

您可以使用this fiddle直接从中创建Bitmap,而不是在上传文件之前将其保存到某处。然后,您也可以取消//Create an image from the posted file's stream Bitmap image = new Bitmap(UploadPic.PostedFile.InputStream); Bitmap picture = new Bitmap(ListBox1.SelectedItem.Value); image = ResizeImage(image, picture.Width, picture.Height); image.Save("~/Resources/" + Path.GetFileName(ListBox1.SelectedItem.Value)); 来电。我没有在我面前使用IDE,但这应该大致有效:

posts