使用SaveAs时的DirectoryNotFoundException(FileUpload)

时间:2014-01-21 09:56:17

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

我有一个ASP.NET MVC应用程序,我想添加文件上载功能。 这是我的经纪人:

private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
    {
        for (int i = 0; i < context.Request.Files.Count; i++)
        {
            var file = context.Request.Files[i];

            var fullPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/App_data/UploadedFiles/")) + Path.GetFileName(file.FileName);

            file.SaveAs(fullPath);

            string fullName = Path.GetFileName(file.FileName);
            statuses.Add(new FilesStatus(fullName, file.ContentLength, fullPath));
        }
    }

当我测试(本地)时,我总是收到此错误:DirectoryNotFoundException:找不到路径的一部分.....

奇怪的是:我在测试后确实在UploadedFiles文件夹中找到了该文件! 那我为什么会收到这个错误?

3 个答案:

答案 0 :(得分:1)

好的,发现自己出了什么问题:选择上传文件后,表单已经提交,导致上传文件。 按下“上传”按钮后,尝试再次上传文件。

因此,错误消息试图告诉我该目录中已存在同名文件!

答案 1 :(得分:0)

注释掉这些代码行。其中一个是导致你的错误。

string fullName = Path.GetFileName(file.FileName);
statuses.Add(new FilesStatus(fullName, file.ContentLength, fullPath));

答案 2 :(得分:0)

试试这个,

private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
{
    string path = HttpContext.Current.Server.MapPath("~/App_data/UploadedFiles/");

    for (int i = 0; i < context.Request.Files.Count; i++)
    {
        var file = context.Request.Files[i];
        file.SaveAs(path + file.FileName);

        ...
    }
}