У меня есть сценарий загрузки файлов, который я написал, который читает файлы ниже public_html и позволяет пользователю загружать их после проверки, чтобы убедиться, что пользователь зарегистрирован и что файл является допустимым файлом для их загрузки.
Проблема, с которой я недавно столкнулся, заключается в том, что на iPad она просто ничего не делает, когда нажимается ссылка.
Пример кода файла загрузки после выполнения всех проверок:
header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/msword"); header("Content-Disposition: attachment; filename=\"file.doc\";" ); header("Content-Length: 50688"); readfile(SITE_PATH .'/files/file.doc');
Этот скрипт был протестирован и проверен на компьютерах PC, Mac и Linux в нескольких браузерах (FF, Opera, IE6-9, Chrome, Safari), и все, похоже, работают нормально, поэтому это должно быть то, что iPad делает по-другому.
Я бы предположил, что это как-то связано с iPad, на самом деле не имеющим файловой структуры как таковой для загрузки файлов, но я не уверен.
Кто-нибудь сталкивался с этой проблемой раньше? Если да, есть ли исправление?
iOS Safari не поддерживает загрузку файлов ..
Обновление: Но если вы хотите открыть файлы .doc на iPad, тогда да … вы можете это сделать …
используйте следующее –
header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/msword"); readfile('file.doc');
единственная разница в вашем коде и моем – я удалил заголовок для вложения. Просто удалите этот заголовок –
header("Content-Disposition: attachment; filename=\"file.doc\";" ); header("Content-Length: 50688");
Фактически вы можете проверить клиентскую операционную систему, если операционная система iOS, а затем не добавлять заголовок для загрузки, как это –
header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/msword"); if (!Operating_System_Is_IOS) { header("Content-Disposition: attachment; filename=\"file.doc\";" ); header("Content-Length: 50688"); } readfile(SITE_PATH .'/files/file.doc');
Apple заблокировала устройства iOS, так что вы не можете получить доступ к файловой структуре. Таким образом, они отключили загрузку файлов.
Вы можете заставить пользователя вставить ссылку (с идентификатором ограниченного времени в ней из-за входа …) в любое стороннее приложение, например, GoodReader. Или просто разрешите им просматривать файл doc в браузере.