Страница 1 из 1
Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 06:58
hidebit
Здравствуйте, вопрос вроде не сложный но понять не могу, exe файл без проблем отдаёт простым выставлением ссылки download, а вот файлы типа txt открывает в браузере, чего не хотелось бы. Качать файл на сервер с другого сайта не совсем резонно, так как сайт чужой.
Как решить проблему куда копать то ?
Код: Выделить всё
public function actionDownloadFile($file){
//отключить профайлеры
$this->disableProfilers();
Yii::app()->request->sendFile(basename($file),file_get_contents($file));
}
Файл скачивается но понятно что битый так как его нет на сервере. Нужен ещё какой-то метод.
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 07:48
hidebit
Сделал вот так, не знаю насколько это правильно.
Код: Выделить всё
public function actionFile(){
$path_parts = pathinfo($_REQUEST['load']);
if ($path_parts['basename']):
Yii::$app->response->sendContentAsFile(file_get_contents($_REQUEST['load']),$path_parts['basename']);
else: throw new NotFoundHttpException;
endif;
}
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 07:54
hidebit
Так но теперь перестала работать загрузка .exe файлов, делать проверку на тип файла ?
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 09:18
urichalex
Код: Выделить всё
<a href="/path/to/file.txt" download>Скачать файл</a>
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 09:41
hidebit
Да в том и дело, что файлы хранятся на стороннем сервере. Exe файл вашим способом он отдаст, а вот txt открывает в самом браузере. И вот как в этом случае поступить ? Проверять extension?
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 09:50
hidebit
Т.е. у меня сейчас формируются две вот такие ссылки.
Код: Выделить всё
<a rel="nofollow" target="_blank" href="/file?load=https%3A%2F%2Fwww.autohotkey.com%2Fdownload%2Fahk-install.exe">Скачать</a>
и <a rel="nofollow" target="_blank" href="/file?load=https%3A%2F%2Fhidebit.ru%2Fupload%2FArmia_Bindy_A_Belov.ahk">Скачать</a>
И написан обработчик для скачивания
Код: Выделить всё
public function actionFile(){
$path_parts = pathinfo($_REQUEST['load']);
if ($path_parts['basename']):
Yii::$app->response->sendStreamAsFile($query,$path_parts['basename']);
else: throw new NotFoundHttpException;
endif;
}
1. файл он не отдаст
2. файл он нормально скачивает.
Вот как всё сделать так чтобы он отдавал корректно оба файла.
Re: Как отдать файл на скачивание со стороннего сервера?
Добавлено: 2019.04.26, 10:14
urichalex
http://htmlbook.ru/html/a/download
Не важно где лежит файл. Это поведение браузера