Ошибка при загрузке файла с использованием ASP MVC3 - PullRequest
2 голосов
/ 04 августа 2011

Этот код предназначен для загрузки файла с использованием контроллера mvc3

public FilePathResult GetFileFromDisk(String file)
{
     String path = AppDomain.CurrentDomain.BaseDirectory + "AppData/";
     String contentType = "text/plain";
     return File(path+file, contentType, file);
}

Просмотр части:

@Html.ActionLink("Download", "GetFileFromDisk","Upload", new { file = "textfile" },null);

Но когда я нажимаю на ссылку, я получаю эту ошибку

Не удалось найти часть пути 'D: \ Project \ FileUploadDownload \ FileUploadDownload \ AppData \ textfile'.

[DirectoryNotFoundException: не удалось найти часть пути 'D: \ Project \ FileUploadDownload \ FileUploadDownload \ AppData \ textfile'.]

Почему имя папки повторяется в пути к файлу? Пожалуйста, предложите решение ...

1 Ответ

4 голосов
/ 04 августа 2011

Попробуй так:

public ActionResult GetFileFromDisk(string file)
{
    var appData = Server.MapPath("~/App_Data");
    var path = Path.Combine(appData, file);
    path = Path.GetFullPath(path);
    if (!path.StartsWith(appData))
    {
        // Ensure that we are serving file only inside the App_Data folder
        // and block requests outside like "../web.config"
        throw new HttpException(403, "Forbidden");
    }

    if (!System.IO.File.Exists(path))
    {
        return HttpNotFound();
    }

    var contentType = "text/plain";
    return File(path, contentType, Path.GetFileName(path));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...