【发布时间】:2016-05-06 03:55:55
【问题描述】:
我正在使用 jQuery 上传图片,到目前为止它运行良好。
图像已保存,但使用两个不同的文件名保存了两次。文件名由DateTime.Now 生成。上传控件位于发布到 iframe 的表单中。
保存图片的代码如下:
int SaveInt = 0;
using (var m = new MemoryStream())
{
bmp.Save(m, ImageFormat.Png);
var img = Image.FromStream(m);
var ratio = (double)1100 / img.Width;
var newWidth = (int)(img.Width * ratio);
var newHeight = (int)(img.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
using (var g = Graphics.FromImage(newImage))
{
g.DrawImage(img, 0, 0, newWidth, newHeight);
}
img = Bloggdesign.Tools.CropImage(newImage, new Rectangle(0, 0, 1100,
500));
if (SaveInt == 0)
{
img.Save(Server.MapPath("~/trashcan/") + NewFilename + ".png");
SaveInt++;
}
}
if (FileToDel != null)
{
File.Delete(Server.MapPath("/trashcan/" + FileToDel + ".png"));
}
SaveInt 变量仅用于测试,但即使使用“if (SaveInt ==0”和添加的数字,它仍然会保存图像两次。当我调试时,我注意到第一个图像直接在行之后保存其中img.Save() 被触发,第二张图片在到达Page_Load 的最后一个“}”时被保存。在此之后代码跳转回一些行:
if (FileToDel != null)
{
File.Delete(Server.MapPath("/trashcan/" + FileToDel + ".png"));
}
第二张图片就是在这里保存的。我在代码中遗漏了什么吗?太奇怪了,图片突然被保存了两次。
【问题讨论】:
-
听起来你触发了两次代码。代码看起来不错。您能否发布触发保存的代码并确保您也没有在
PageLoad上执行此操作。 -
你完全正确。该代码被javascript中的意外复制代码触发了两次。不知何故,我设法将两个 .change() 方法添加到 FileInput 字段。很有趣,我一定是在几个小时的编码后深夜这样做的。 :P 无论如何感谢您的反馈。
-
我会将我的回复添加到答案中,以便您可以将其设置为已回答并关闭它:)