PHP: скрипт загрузки файла не работает на iPad - PullRequest
6 голосов
/ 13 января 2012

У меня есть сценарий загрузки файлов, который я написал, который читает файлы из ниже 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');

Этот сценарий был протестирован и проверен на ПК, Mac и Linux-машинах в нескольких браузерах (FF, Opera, IE6-9, Chrome, Safari) и, кажется, все работает нормально, поэтому iPad должен действовать по-другому. .

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

Кто-нибудь сталкивался с этой проблемой раньше? Если так, есть ли исправление?

Ответы [ 3 ]

12 голосов
/ 13 января 2012

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');
0 голосов
/ 19 января 2012

Вы можете заставить пользователя вставить ссылку (с ограниченным по времени идентификатором в ней из-за входа ...) в любое стороннее приложение, например GoodReader.Или просто позвольте им просматривать файл документа в браузере.

0 голосов
/ 19 января 2012

Apple заблокировала устройства iOS, чтобы вы не могли получить доступ к файловой структуре.Таким образом, они отключили загрузку файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...