【问题标题】:Uploading an image, the image gets saved twice上传图像,图像被保存两次
【发布时间】: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 无论如何感谢您的反馈。
  • 我会将我的回复添加到答案中,以便您可以将其设置为已回答并关闭它:)

标签: c# .net


【解决方案1】:

听起来您触发了两次代码。代码看起来不错。您能否发布触发您保存的代码并确保您也没有在Page_Load 上执行此操作。

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2016-03-27
    • 1970-01-01
    • 2018-10-23
    • 2011-08-26
    相关资源
    最近更新 更多