我有以下代码用于将图片上传到我的网站。首先将图像上载到临时文件夹,然后在将新图像上载到主图像文件夹之后调整其大小。
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"));
未在指定路径创建文件。 请任何人知道为什么会这样,我该如何解决这个问题?
答案 0 :(得分:2)
我不确定你为什么要对FileUpload.SaveAs()方法中的名称或文件进行硬编码尝试这样的事情
FileUpload1.SaveAs(Path.Combine(Server.MapPath("~/TEMP/"), FileUpload1.FileName));
如果服务器根目录中有文件夹...则需要将其添加到Temp / someFolderName / 尝试设置虚拟目录以写入该文件夹。
你也可以这样做
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.";
}
}
}
答案 1 :(得分:1)
好吧,我终于找到了问题的解决方案。并发布答案,希望将来可以解决别人的同样问题。
我通过删除包含FileUpload控件的更新面板解决了这个问题。
此外,您可以查看此链接update panel with file upload [参考:影子向导]以解决此问题,而无需删除更新面板。