Вопрос-Ответ по php

Печать RSS
9973
Кураторы темы:

X

Пришелец
0
Добрый день всем. Имею скрипт, написанный на php для выдачи файла, который рандомно меняет имя файла при скачке. В обычных браузерах проблем нет ни каких. А вот в строенном браузере Telegram (смартфон андроид) при скачке файла есть проблемка. Cкрин загрузки и сам файл load.php прикрепляю. Подскажите есть ли решение проблемы? Нужно чтобы браузер телеграмм видел название файла. Спасибо
693e82c5b73d6374799989.jpg
Прикрепленные файлы:
load.zip (944B)

Господин ПЖ
0
xmts, а какая "проблемка"? Не скачивается, не меняет имя или что? Ты не закончил предложение
Вообще это старая проблема webview иногда глючит особенно с русскими названиями
У тебя точно в пути все буквы на английском, без пробелов и спецсимволов?
В твоем коде 2 раза указывается content-type

Попробуй следующий код

$randName = 'Твое имя файла'; 
$asciiName = preg_replace('/[^a-zA-Z0-9._-]/', '_', $randName);
$encodedName = rawurlencode($randName);

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/vnd.android.package-archive');
header('Content-Disposition: attachment; filename="' . $asciiName . '"; filename*=UTF-8\'\'' . $encodedName);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('X-Content-Type-Options: nosniff');

Вот тут спецификация если что
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Disposition

еще нашел, что рекомендуют убрать пробелы после точки с запятой
header('Content-Disposition: attachment;filename="' . $asciiName . '";filename*=UTF-8\'\'' . $encodedName);
X

Пришелец
0
Не помогает, скорее всего это баг в строенном браузе Telegram, ни в каких других браузерах проблем нет
W

Землянин
0
а зачем ты через телегу отдаёшь такой тип?
header("Content-Type: application/vnd.android.package-archive");
я хз чё ты там предаёшь, но твоя ошибка в передаче сразу двух типов

header('Content-Type: application/octet-stream');
header("Content-Type: application/vnd.android.package-archive");

толкаешь apk через телегу?
я бы так толкнул, чё ты там выдаёшь
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file));

ob_clean();
flush();
readfile($file);
exit;
Изменил: WapStyle
W

Землянин
0
Сань с тобой согласен
Стикеры / Теги / Правила