@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'];
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
S2 | CRM Тольятти
от 120 000 до 200 000 ₽
Oblako Studio Санкт-Петербург
от 120 000 до 240 000 ₽
от 120 000 до 200 000 ₽
05 апр. 2020, в 23:37
1000 руб./за проект
05 апр. 2020, в 21:08
40000 руб./за проект
05 апр. 2020, в 21:01
3000 руб./за проект