Задать вопрос
@maxdart

Как решить проблему с загрузкой файлов с сервера в IOS и Android?

Всем привет!

Столкнулся со следующей проблемой. Имеется PHP-скрипт, который берет из базы данных файл (BLOB, изображение, либо PDF), и выдает его для загрузки браузеру, предварительно сформировав нужные заголовки. Этот скрипт корректно работает во всех протестированных декстопных браузерах (FF, Chrome, Opera, MSIE), но при попытке загрузить файл на мобильном устройстве, загружается пустое изображение. Такая картина наблюдается, как минимум в Safari на Iphone (IOS 10.3), и Chrome на устройствах с Android 6. Были перепробованы самые различные варианты отправки headers и их комбинации, но пока что, увы, безрезультатно.

Буду благодарен за советы по формированию заголовков, которые будут корректно восприниматься как декстопными, так и мобильными браузерами.

Привожу значимый в данной проблеме отрывок скрипта:

$res = $db->getBLOB($_GET['fid']);
$theUA = strtolower($_SERVER['HTTP_USER_AGENT']);
$fileName = $res['name'];
$formatRFC2231 = 'Content-Disposition: attachment; filename*=UTF-8\'\'%s;';
$formatDef = 'Content-Disposition: attachment; filename="%s";';
$format = $formatDef;
if(strpos($theUA,'msie') || strpos($theUA,'chrome')) {
	$fileName = rawurlencode($fileName);
}
if(strpos($theUA,'opera') || strpos($theUA,'firefox')) {
	$fileName = rawurlencode($fileName);
	$format = $formatRFC2231;
}
$contentDisp = sprintf($format, $fileName);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
header("Content-type: ".$res['ctype']);
header($contentDisp);
header("Content-Encoding: binary");
header("Content-Description: File Transfer");
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
echo $res['content'];
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы