我需要更换服务器中的图片,用户将从列表框中选择一张图片然后他将从他的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 +接口"错误,表示正在使用另一个具有相同名称的文件。
任何帮助都是真正的赞赏
答案 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