Как разрешить загрузку файлов PDF на iOS?

Эта проблема

Я создал веб-форму HTML для загрузки файлов. При доступе с устройства iOS файлы, не являющиеся изображениями (.pdf, .docx и т. д.), отображаются как серый, когда нажата кнопка «Обзор» для выбора файла в проводнике файлов iOS.

У меня есть полнофункциональная страница (HTML, CSS, JS, PHP), но я урезал всю страницу до простейшего элемента формы для проверки функциональности. Вот пример кода, который не работает на моем сервере (это все, что есть в HTML-файле, кроме шаблонных тегов), при просмотре на устройстве под управлением iOS 12.3:

<form action = "" enctype = "multipart/form-data" method = "post">
   <input type = "file" accept = "image/*, .heic, .hevc, .heif, .pdf, .png, .gif, .jpg, .jpeg, .doc, .docx, image/png, image/jpg, image/jpeg, image/gif, application/msword, application/pdf" multiple>
</form>

Вы можете увидеть такой же простой пример работающий файлов, не являющихся изображениями, которые можно выбрать с устройства iOS с помощью одного из редакторов «Try It» W3School:

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_file

Что я пробовал

  • SSL (расширенная проверка)
  • Техническая поддержка Apple (ссылка на веб-сайт Apple Developer после пары часов разговора по телефону)
  • Несколько браузеров (iOS Safari, iOS Chrome, iOS Google App)
  • Несколько устройств Apple (работает на Mac, не работает на iPhone и iPad)
  • Конкурентные платформы (работает на Android)
  • Бета-версия iOS 13 (работает)

Вопрос

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

Какой фактор в iOS определяет, какие сайты/формы могут выбирать файлы, не являющиеся изображениями, для загрузки?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
17
0
4 354
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я сделал веб-страницу, которая может получать pdf-файлы и отправлять их в чаты через телеграмм-бота. Я открыл веб-страницу со своего Iphone, просто выбрал PDF-файл и отправил его, и он работал нормально.

Код, который я использовал для входного файла, следующий.

<form action = "inviapdf.php" enctype = "multipart/form-data" method = "post" class = "inputfile">
<input accept = ".png, .jpg, .jpeg" class = "bott" type = "file" name = "pdf"/>
<button>SendPDF</button>
</form>

У меня Iphone 7+ с последней версией iOS. Если я не ответил на ваш вопрос, можете ли вы сказать об этом немного конкретнее? Спасибо

Итак, я проверил пример W3School, который вы там разместили, и, как я уже сказал, он работает для меня. Также я проверил его на телефоне моего друга (Iphone X с последней версией IOS), и он работает нормально. Вместо того, чтобы говорить через комментарии, свяжитесь со мной в телеграмме @AScotto133, я могу показать вам свою веб-страницу, чтобы вы могли проверить, работает ли она для вас.

Synapsis 10.06.2019 14:14

Также я отредактировал свой ответ, чтобы изменить некоторый код для части «принять».

Synapsis 10.06.2019 14:20

Я бы очень хотел присудить это вам, но центральный вопрос все еще остается без ответа, и это What is the "X" factor on iOS that determines which sites are able to select non-image files on a web form upload? Я дал вам голос, потому что вы помогли мне установить, что это работает на некоторых сайтах (включая, я уверен, ваш) . Теперь я просто сосредоточен на выяснении того, почему сайт, который я создал на сервере, который я использую, нет функционирует как рабочие сайты.

Grant Noe 10.06.2019 18:34
Ответ принят как подходящий

Вы должны удалить image/* и другие image/ типы файлов.

<form action = "" enctype = "multipart/form-data" method = "post">
   <input type = "file" accept = ".heic, .hevc, .heif, .pdf, .png, .gif, .jpg, .jpeg, .doc, .docx, application/msword, application/pdf" multiple>
</form>

Вот пример вашего кода с моими исправлениями: https://codepen.io/ВладимирБутаков/pen/XvXxGq?&editable=true

Я проверю это и дам вам знать, что я найду. Любая логика браузера или что-то еще, почему типы файлов «image/» влияют на загрузку без изображений?

Grant Noe 23.07.2019 18:04

В моем тестировании это работает! Я все еще хотел бы знать логику, стоящую за этим, поскольку я не смог найти документацию. Ваш опыт был настоящим спасением жизни сегодня.

Grant Noe 23.07.2019 18:35

Другие вопросы по теме