1

我有以下代码用于将图像上传到我的网站。图像首先上传到一个临时文件夹,然后在新图像上传到主图像文件夹后调整大小。

FileUpload1.SaveAs(Server.MapPath("~/TEMP/tmpimg.jpg"));
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(Server.MapPath("~/TEMP/tmpimg.jpg"));
System.Drawing.Image MainImg = new SPCL().ResizeImage(originalImage, 700, 600, false);
MainImg.Save(Server.MapPath("~/Images/Home/Home1.jpg"));

这给出了以下例外:

System.IO.FileNotFoundException: C:\site\wwwroot\TEMP\tmpimg.jpg at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) at Settings.saveImages() at Settings.saveSettings()
at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) at Settings.saveImages() at Settings.saveSettings()

我已经在文件夹上设置了所有写权限,甚至尝试在网站的所有文件夹上启用所有权限(当我被激怒时;))

错误出现在这一行System.Drawing.Image.FromFile(Server.MapPath("~/TEMP/tmpimg.jpg"));

未在指定路径创建文件。请任何人知道为什么会发生这种情况,我该如何解决这个问题?

4

2 回答 2

2

我不确定您为什么要从 FileUpload.SaveAs() 方法对名称或文件进行硬编码尝试这样的事情

FileUpload1.SaveAs(Path.Combine(Server.MapPath("~/TEMP/"), FileUpload1.FileName));

如果服务器根目录上有一个文件夹..您需要将其添加到 Temp/someFolderName/ 尝试设置一个虚拟目录以及写入该文件夹。

你也可以这样

FileUpload1.PostedFile.SaveAs(Path.Combine(Server.MapPath("~/TEMP/"), FileUpload1.FileName));

HttpPostedFile类

从 MSDN 引用,这已经过测试,因此您可以遵循类似的内容。请记住,如果此代码不起作用,则可能是您的权限问题。

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {
        Boolean fileOK = false;
        String path = Server.MapPath("~/UploadedImages/");
        if (FileUpload1.HasFile) 
        {
            String fileExtension = 
                System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
            String[] allowedExtensions = 
                {".gif", ".png", ".jpeg", ".jpg"};
          for (int i = 0; i < allowedExtensions.Length; i++)
          {
               if (fileExtension == allowedExtensions[i])
               {
                    fileOK = true;
               }
          }
        }

        if (fileOK)
        {
            try
            {
                FileUpload1.PostedFile.SaveAs(path 
                    + FileUpload1.FileName);
                Label1.Text = "File uploaded!";
            }
            catch (Exception ex)
            {
                Label1.Text = "File could not be uploaded.";
            }
        }
        else
        {
            Label1.Text = "Cannot accept files of this type.";
        }
    }
}
于 2013-01-12T19:26:42.163 回答
1

好吧,我终于找到了解决问题的方法。并发布答案,希望它可以在将来解决其他人的同样问题。

我通过删除包含 FileUpload Control 的更新面板解决了这个问题

您也可以通过文件上传查看此链接更新面板[Refered by: Shadow Wizard] 以在不删除更新面板的情况下解决此问题。

于 2013-01-13T12:10:32.800 回答