1

我有这个代码:

[HttpPost]
    public ActionResult Edit(Photograph photo, HttpPostedFileBase image)
    {

        if (ModelState.IsValid)
        {
            if (image != null)
            {
                byte[] imageData = new byte[image.ContentLength];
                image.InputStream.Read(imageData, 0, image.ContentLength);
                System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData);
            }

            repository.SavePhotograph(photo);
            TempData["message"] = string.Format("{0} has been saved", photo.Name);
            return RedirectToAction("Index");
        }
        else
        {
            return View(photo);
        }
    }

它的目的是从表单上传照片并将其保存在服务器(本地服务器)中。我给了文件夹“Visual Studio 2010”,所有项目都保留了网络服务用户权限和 IIS_IUSRS 组权限。我还以管理员身份运行 Visual Studio。

出于某种原因,它仍然不允许我将文件保存到该位置。该位置位于 {Project_Name\Content\Images} 下的项目文件夹中。我如何让它在那里保存文件?

谢谢,

4

3 回答 3

1

它给我这个错误的原因是因为方法:

System.IO.File.WriteAllBytes()

获取文件和数据的路径。

我正在传递一个文件夹

System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData);

我应该传递一个文件:

System.IO.File.WriteAllBytes(String.Format("{0}{1}", HttpContext.Server.MapPath("~/Content/Images"), image.FileName), imageData);

现在我的存储库出现错误,所以我正在调查:)我非常喜欢编码....;)

于 2012-11-02T18:57:33.820 回答
0

出于某种原因,它仍然不允许我将文件保存到该位置。

你有任何错误吗?如果是,请在此处发布完整的错误。

案例 I:如果您使用 Visual Studio 运行 MVC 应用程序,请确保使用“以管理员身份运行”选项运行 Visual Studio。

案例二:如果您在 IIS 上运行 MVC 应用程序。转到保存图像的文件夹。即授予“IIS_IUSRS”用户完全控制“修改”权限。

于 2012-11-02T13:33:09.067 回答
0

RE:带有“System.IO.File.WriteAllBytes”的行...您是否要保存到目录中?它在哪里为上传的文件选择文件名?

于 2012-11-02T13:41:22.030 回答