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中的面板是不同的,尤其是更新面板,因为部分回发方面有很多存在此问题,但在挖掘之后,他们通常会像您一样解决此问题。。顺便说一句,搞清楚了干得不错。。