Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用FileUpload控件上载文件时遇到System.IO.FileNotFoundException_C#_Asp.net_File_File Upload_Filenotfoundexception - Fatal编程技术网

C# 使用FileUpload控件上载文件时遇到System.IO.FileNotFoundException

C# 使用FileUpload控件上载文件时遇到System.IO.FileNotFoundException,c#,asp.net,file,file-upload,filenotfoundexception,C#,Asp.net,File,File Upload,Filenotfoundexception,我有下面的代码,我是用来上传一个图像到我的网站。首先将图像上载到临时文件夹,然后在将新图像上载到主图像文件夹后调整其大小 FileUpload1.SaveAs(Server.MapPath("~/TEMP/tmpimg.jpg")); System.Drawing.Image originalImage = System.Drawing.Image.FromFile(Server.MapPath("~/TEMP/tmpimg.jpg")); System.Drawing.Image MainIm

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

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.SaveAs()方法中硬编码名称或文件。请尝试类似的方法

FileUpload1.SaveAs(Path.Combine(Server.MapPath("~/TEMP/"), FileUpload1.FileName));
FileUpload1.PostedFile.SaveAs(Path.Combine(Server.MapPath("~/TEMP/"), FileUpload1.FileName));
如果服务器根目录上有文件夹。。您需要将其添加到Temp/someFolderName/ 尝试设置一个虚拟目录,并写入该文件夹

你也可以这样做

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

从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.";
        }
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(iPostBack)
{
布尔fileOK=false;
字符串路径=Server.MapPath(“~/UploadedImages/”);
if(FileUpload1.HasFile)
{
字符串文件扩展名=
System.IO.Path.GetExtension(FileUpload1.FileName.ToLower();
字符串[]允许的扩展=
{.gif“,.png“,.jpeg“,.jpg”};
for(int i=0;i
我终于找到了问题的解决办法。并发布答案,希望它能在将来解决其他人同样的问题

我通过移除包含FileUpload控件的更新面板解决了这个问题


您还可以检查此链接[由:阴影向导引用],以便在不删除更新面板的情况下解决此问题。

这将如何工作?您在定义原始图像之前使用的是
originalImage
。它肯定会给出一个空值。或者我认为这将是一个编译器错误。好的。。让我试试你的解决方案,然后我会告诉你..同样为了将来的参考,我会把代码包装成一个
try{}catch{}
@DJKRAZE我试过你的解决方案..但是情况还是一样..Shiva你能把完整的方法代码贴在你有代码的地方吗?Thankspst,缺少一个结束括号<代码>文件上传1.FileName))第一个代码不起作用。我试试第二种,让你吃know@DJKRAZE当前位置我解决了问题,并将解决方案作为答案发布。请看一看。看这个:湿婆,太棒了,我不知道你使用了更新面板,如果这样的话,我可以帮助你更快地解决这个问题。。坚持尝试解决您的问题并成功获得链接的+1感谢@ShadowWizard,这是一项了不起的工作。这就解释了原因。谢谢@DJKRAZE。我认为这与更新面板无关。但是当我尝试了所有的方法后,这是剩下的最后一个技巧,所以我应用了它,它成功了没问题,湿婆。。我知道winforms和Web forms中的面板是不同的,尤其是更新面板,因为部分回发方面有很多存在此问题,但在挖掘之后,他们通常会像您一样解决此问题。。顺便说一句,搞清楚了干得不错。。