是否可以将上传的文件保存在~/Content中?(ASP.NET MVC2)
本文关键字:Content ASP MVC2 NET 存在 保存 文件 是否 | 更新日期: 2023-09-27 17:57:55
调试/测试时,我一直试图将传入的上传图像保存在我的开发机器上的~/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服务器。
您可以在磁盘上任意位置复制/保存图像和文件
您只需要检查IIS进程是否有权访问该文件夹
我倾向于创建一个自定义文件夹,将上传的文件放在那里。
您应该能够将上传的文件保存到您选择的任何目录中。问题是确保运行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);
}