Загрузка неправильного файла xlsx

#c# #html #iis #.net-core

#c# #HTML #iis #.net-ядро

Вопрос:

Я использовал этот тег, чтобы пользователи могли правильно загружать файлы.

<a href="upload/@newmodel.AttachFile" target="_blank" ><i class="fa fa-download" aria-hidden="true"></i></a>

результат :

 <a href="upload/Files/fa39fa29-85b6-4978-854f-ca156151f777/PART 041.mp4" target="_blank" download="download"><i class="fa fa-download" aria-hidden="true"></i></a>

<a href="upload/Files/122d3f13-767f-4405-94c5-e4166f0981bb/Hlp-Lifeplus-Enteghal-V001-990824-01.pdf" target="_blank" download="download"><i class="fa fa-download" aria-hidden="true"></i></a>

<a href="upload/Files/251823aa-1ece-4b21-afae-3cb4439e3828/services990730ref01.xlsx" target="_blank" download="download"><i class="fa fa-download" aria-hidden="true"></i></a>
  

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

введите описание изображения здесь

кроме того, в IE это работает, но не работает в браузерах Firefox и Chrome.

Комментарии:

1. Кажется, вам следует ввести XSLX где-нибудь в разрешенных вами типах MIME

2. Похоже, это не имеет никакого отношения к C #, XLSX или .NET Core. В вопросе нет соответствующего кода, только HTML

3. Кстати, имя файла, которое вы явно предлагаете для этого файла, является download . Вы специально указываете всем браузерам сохранять ваши файлы как download . По какой-то причине Chrome и Firefox игнорируют то, что вы им сказали . Удивительное поведение заключается в том, что любой файл был сохранен с правильным расширением, а не в том, что один файл был сохранен с указанным вами именем файла

Ответ №1:

Все теги неверны, но по какой-то причине только файл Excel обрабатывается должным образом. download должно быть либо пустым, либо содержать желаемое имя файла. Возможно, IIS явно указывает Content-Disposition заголовок для настроенных типов носителей, который устраняет ошибку?

Чтобы устранить проблему, укажите желаемое имя файла в download теге, например :

 <a href="upload/Files/fa39fa29-85b6-4978-854f-ca156151f777/PART 041.mp4" 
   target="_blank" download="PART 041.mp4">
...</a>
<a href="upload/Files/251823aa-1ece-4b21-afae-3cb4439e3828/services990730ref01.xlsx" 
   target="_blank" download="services990730ref01.xlsx">
...</a>
  

Из ссылки на тег Mozilla Developer Network (документы ie Firefox):

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

  • Без значения браузер предложит имя файла / расширение, сгенерированное из разных источников:
  • HTTP-заголовок Content-Disposition
  • Последний сегмент в пути URL
  • Тип носителя (из заголовка (Content-Type, начало URL-адреса data: или Blob.type для URL-адреса blob:)
  • Определение значения предполагает его в качестве имени файла. символы / и преобразуются в символы подчеркивания (_). Файловые системы могут запрещать другие символы в именах файлов, поэтому браузеры при необходимости изменят предлагаемое имя.

И

Примечание: если заголовок Content-Disposition содержит информацию, отличную от атрибута загрузки, результирующее поведение может отличаться:

-Если в заголовке указано имя файла, оно имеет приоритет над именем файла, указанным в атрибуте загрузки.

Это означает, что каким Content-Disposition -то образом для файлов PDF и MP4 указан заголовок, который переопределяет download атрибут. Вы можете проверить это либо через вкладку Сеть в инструментах разработчика вашего браузера, либо через отладочный прокси, такой как Fiddler

Комментарии:

1. Я сделал это, он отлично работает в mozila, но в Chrome вместо загрузки он открывает evrythings