0

在调试/测试时,我一直在尝试将传入的上传图像保存在我的开发机器上的 ~/Content 中,但没有文件被传输到那里。该文件夹是否允许将图像保存/传输到它,或者我需要将它们保存在 ~/App_Data 中吗?


编辑:我正在使用的代码:

public ActionResult(AdminGameEditModel formData)
{
    Game game = new Game();

    AutoMapper.Mapper.Map<AdminGameEditModel, Game>(formData, game);

    if (formData.BoxArt.ContentLength > 0 && formData.IndexImage.ContentLength > 0)
    {
        var BoxArtName = Path.GetFileName(formData.BoxArt.FileName);
        var BoxArtPath = Path.Combine(Server.MapPath("~/Content/Images/BoxArt"), BoxArtName);
        game.BoxArtPath = BoxArtPath;
        formData.BoxArt.SaveAs(BoxArtPath);

        var IndexImageName = Path.GetFileName(formData.IndexImage.FileName);
        var IndexImagePath = Path.Combine(Server.MapPath("~/Content/Images/GameIndexImages"), IndexImageName);
        game.IndexImagePath = IndexImagePath;
        formData.IndexImage.SaveAs(IndexImagePath);
    }

    // rest of controller method
}

这两个文件都是HttpPostedFileBase对象。我目前使用的服务器只是在 VS 调试期间运行的 ASP.NET 服务器。

4

2 回答 2

2

您可以在磁盘上的任何位置复制/保存图像和文件。
您只需检查 IIS 进程是否有权访问该文件夹。
我倾向于创建一个自定义文件夹来放置我上传的文件。

于 2011-05-26T13:39:38.170 回答
1

您应该能够将上传的文件保存到您选择的任何目录。关键是确保运行 ASP.NET 的服务帐户具有对该文件夹的写入权限。对于 IIS 7 或更高版本,它可能是服务器上的网络服务帐户。可以肯定的是,请查看您的站点在 IIS 中运行的应用程序池,并检查它运行的身份。


更新:

我懂了。你可以试试这个,看看该类型的 SaveAs 方法是否存在问题(我记得有些人对此有问题)。

代替:

formData.BoxArt.SaveAs(BoxArtPath);

尝试:

using (var output = new FileStream(BoxArtPath, FileMode.CreateNew)) {
  var data = new byte[formData.BoxArt.ContentLength];
  formData.BoxArt.InputStream.Read(data, 0, data.Length);
  output.Write(data, 0, data.Length);
}
于 2011-05-26T13:39:06.160 回答