Не удается открыть файл после загрузки с сервера - PullRequest
0 голосов
/ 15 мая 2019

После успешной загрузки файла с сервера (pdf, jpg, ..) я не смог открыть этот файл на своем компьютере. Он сказал: «Похоже, мы не поддерживаем этот формат файла». Файлы хранятся и читаются на сервере. Интересно, что-то отсутствует в моей функции загрузки:

[HttpGet]
public ActionResult Download(Guid? attachmentId)
{
    var visitAttachment = _visitAttachmentService.FindOne(x => x.Id == attachmentId);
    try
    {
        var serverPath = Server.MapPath(visitAttachment.Path);
        byte[] fileBytes = System.IO.File.ReadAllBytes(serverPath);
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, visitAttachment.AttachmentName);
    }
    catch
    {
        return File(Encoding.UTF8.GetBytes(""), System.Net.Mime.MediaTypeNames.Application.Octet, visitAttachment.AttachmentName);
    }
}

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Мое мнение, что у вас может отсутствовать расширение файла. Если это так, вы можете получить его, используя Path.GetExtension(serverPath)

Отредактировано

Попробуйте использовать FileResult вместо ActionResult

[HttpGet]
public FileResult Download(Guid? attachmentId)
{
    var visitAttachment = _visitAttachmentService.FindOne(x => x.Id == attachmentId);
    try
    {
        var serverPath = Server.MapPath(visitAttachment.Path);
        byte[] fileBytes = System.IO.File.ReadAllBytes(serverPath);
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, visitAttachment.AttachmentName);

    }
    catch
    {
        return File(Encoding.UTF8.GetBytes(""), System.Net.Mime.MediaTypeNames.Application.Octet, visitAttachment.AttachmentName);
    }

}
0 голосов
/ 15 мая 2019

Кажется, файл загружен неправильно, попробуйте, может, поможет, удачи

  FileDownload(yourfilepath ,yourfilenamewithFormat)
    {
        string filename = yourfilenamewithFormat;
        byte[] file_Bytes = System.IO.File.ReadAllBytes(yourfilepath);
        return File(file_Bytes, System.Net.Mime.MediaTypeNames.Application.Octet, filename);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...