Как правильно вернуть файл в просмотр? - PullRequest
0 голосов
/ 20 марта 2019

Мне трудно выполнить предположительно простую задачу, и я не понимаю, делаю ли я что-то не так или мне нужно искать проблему где-то еще. В основном у меня есть мой POST-запрос javascript:

    $.ajax(
        {
            url: "/upload",
            type: "POST",
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            success: function (data) {
                stopUpdatingProgressIndicator();
            }
        }
    );
}

var intervalId;

function startUpdatingProgressIndicator() {
$("#progress").show();
$.post(
    "/upload/progress",
    function (progress) {

    }
); 

и в моем контроллере я передаю файл следующим образом:

return File(fileMod, System.Net.Mime.MediaTypeNames.Application.Octet, "test.mod");

Но ничего не произошло, файл для загрузки не представлен, fileMod - это простой байтовый массив, и ошибка не отображается ..

EDIT Я также попытался установить тип контента 'application / force-download` в моем ' файле возврата ', но безуспешно.

1 Ответ

0 голосов
/ 20 марта 2019

Вот пример очень простого действия контроллера, который загружает информацию о файле из базы данных (путь, имя и т. Д.), А затем загружает с диска этот файл.

[HttpGet]
public IActionResult DownloadFile(Guid fileId)
{
    var file = _context.Files.FirstOrDefault(x => x.Id == fileId);

    if (file == null)
    {
        return ...
    }

    // you may also want to check permissions logic
    // e.g if (!UserCanDownloadFiles(user)) { return ... }

    var bytes = File.ReadAllBytes(file.PhysicalPath)); // add error handling here
    return new FileContentResult(bytes, "application/octet-stream") { FileDownloadName = file.FriendlyName }
}

Phyiscal Path = например, C:\AppFiles\file.jpg

FriendlyName = например, file.jpg

Возможно, вам придется прочитать об этом: https://en.wikipedia.org/wiki/Media_type

Пример загрузки:

<a class="text-info" href="@Url.Action("DownloadFile", "MyController", new { fileId = item.Id })">Download</a>
...