使用FileUpload控件上传文件时遇到filenotfoundexception

本文关键字:遇到 filenotfoundexception 文件 FileUpload 控件 使用 | 更新日期: 2023-09-27 17:52:46

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

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"));

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

使用FileUpload控件上传文件时遇到filenotfoundexception

我不知道为什么你硬编码的名称或文件从fileupload . savea()方法尝试这样做

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

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

你也可以这样写

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

HttpPostedFileClass

参考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.";
        }
    }
}

我终于找到解决问题的办法了。并把答案贴出来,希望将来能解决别人同样的问题。

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

你也可以检查这个链接更新面板与文件上传[参考:Shadow Wizard]来解决这个问题,而不删除更新面板