无法在MVC中加载文件

时间:2011-08-23 11:31:31

标签: c# asp.net asp.net-mvc file-upload http-post

我有下一个代码:

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue();

Environment.CurrentDirectory = System.IO.Path.GetTempPath();

var fileFile = Request.Files["File" + prop.Id];

if (fileFile == null) continue;

string pathFile = Environment.CurrentDirectory;

fileFile.SaveAs(pathFile);

ordinaryPropertyValue.Value = pathFile;

instance.SetPropertyValue(prop.Id, ordinaryPropertyValue);

但我无法加载我的文件'cos下一个问题:

AccessException:拒绝访问路径'C:\ Users \ Michael \ AppData \ Local \ Temp'。

3 个答案:

答案 0 :(得分:0)

这是一个安全例外,执行Web应用程序的用户无权在目标路径上写入。

请注意,您正在尝试将文件保存到没有文件名的目录路径。

无论如何,你的代码是一团糟,我个人分配/更改Environment.CurrentDirectory

答案 1 :(得分:0)

我假设您在本地计算机上使用IIS,在这种情况下,您可能需要将此目录的写入权限授予运行Web应用程序的帐户(使用VS的内置服务器在您的帐户下运行) 。

如果你使用的是IIS 7 +它是'ApplicationPoolIdentity',否则就是'NETWORK SERVICE'

P.S。我也不建议更改环境设置。

答案 2 :(得分:0)

感谢您的帮助,但正如您所说,真正的原因不是访问问题。 真正的原因是空洞的“”价值。所以我重新制作了我的代码,例如:

var ordinaryPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue();

var fileFile = Request.Files["File" + prop.Id];

if (fileFile == null)
    continue;

string pathFile = Server.MapPath("~/temp");

string filenameFile = Path.GetFileName(fileFile.FileName);

if (!string.IsNullOrEmpty(filenameFile))
{
    fileFile.SaveAs(Path.Combine(pathFile, filenameFile));

    ordinaryPropertyValue.Value = Path.Combine(pathFile, filenameFile);

    instance.SetPropertyValue(prop.Id, ordinaryPropertyValue);
}