#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