在ASP.NET MVC 3.0中上载图像时出错

时间:2013-01-12 18:14:01

标签: asp.net-mvc asp.net-mvc-3

在本地计算机上,下面的代码运行正常,但是当托管在远程服务器上时,它似乎找不到图像文件。我创建了Image文件夹,并为其提供了读/写权限

// -------------------------------------------- <登记/> 错误

Server Error in '/' Application.  
Could not find file 'IdImage.jpg'.

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

Exception Details: System.IO.FileNotFoundException: Could not find file 'IdImage.jpg'.

代码如下 // ---------------------------------------------

[HttpPost]  
public ActionResult Index(HttpPostedFileBase file)  
{  
    if (file != null && file.ContentLength > 0)   
    {  
       var fileName = Path.GetFileName(file.FileName);  
       var path = Path.Combine(Server.MapPath("~/Images/Photo"), fileName);  
       file.SaveAs(path);  
    }  

    return RedirectToAction("Index");          
}

2 个答案:

答案 0 :(得分:0)

这看起来非常像权限问题。您说您已经创建了Images文件夹并赋予了它读/写权限,但是从您在代码中看到的内容中,您试图将图像存储在名为Photo的子文件夹中。因此,请确保您也创建了此文件夹,并为其提供了读/写权限。还要确保将这些权限授予正确的帐户 - 在IIS中配置的帐户,以运行托管应用程序的应用程序池。

答案 1 :(得分:0)

我使用此代码

[HttpPost]
public ActionResult Upload(System.Web.HttpPostedFileBase file)
{
       string filename = Server.MapPath("~/files/somename");
       file.SaveAs(filename);
       return RedirectToAction("Index");
}

在视图中

@{
    ViewBag.Title = "Upload";
}
<h2>
    Upload</h2>
@using (Html.BeginForm(actionName: "Upload", controllerName: "User", 
                       method: FormMethod.Post,
                       htmlAttributes: new { enctype = "multipart/form-data" }))
{
    <text>Upload a photo:</text> <input type="file" name="photo" />
    <input type="submit" value="Upload" />
}