我有以下代码,我用来上传图像到我的网站。首先将图像上传到临时文件夹,然后将其调整大小,然后将新图像上传到主图像文件夹。
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:sitewwwrootTEMPtmpimg.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 . 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]来解决这个问题,而不删除更新面板