Как скачать строний файл?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Как скачать строний файл?

Сообщение user »

Например я забираю файл из стороннего ресурса, можно его скачать просто

Код: Выделить всё

<a href="http://example.org/param1=value1&param2=value2" download></a>
а как сделать это средствами Yii2? Я не разобрался как методом sendFile сделать?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как скачать строний файл?

Сообщение yiiliveext »

В доке есть

Код: Выделить всё

      public function actionFile($filename)
      {
          $storagePath = Yii::getAlias('@app/files');
     
          // check filename for allowed chars (do not allow ../ to avoid security issue: downloading arbitrary files)
          if (!preg_match('/^[a-z0-9]+\.[a-z0-9]+$/i', $filename) || !is_file("$storagePath/$filename")) {
              throw new \yii\web\NotFoundHttpException('The file does not exists.');
          }
          return Yii::$app->response->sendFile("$storagePath/$filename", $filename);
      }
      
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как скачать строний файл?

Сообщение user »

это не сработало
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как скачать строний файл?

Сообщение yiiliveext »

user писал(а): 2020.01.14, 21:56 это не сработало
Уверен на 100% что вы или не прописали, или неверно прописали правило в urlManager. Проверил, у меня все сразу заработало.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как скачать строний файл?

Сообщение user »

yiiliveext писал(а): 2020.01.14, 22:10
user писал(а): 2020.01.14, 21:56 это не сработало
Уверен на 100% что вы или не прописали, или неверно прописали правило в urlManager. Проверил, у меня все сразу заработало.
про какое правило urlManager вы говорите?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как скачать строний файл?

Сообщение yiiliveext »

Код: Выделить всё

 'rules' => [
		//...
                'file/<filename:[0-9a-zA-Z\.]+>' => 'site/file',
            ],
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как скачать строний файл?

Сообщение user »

тут же динамический url http://example.org/param1=value1&param2=value2
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как скачать строний файл?

Сообщение yiiliveext »

user писал(а): 2020.01.15, 00:09 тут же динамический url http://example.org/param1=value1&param2=value2
Это правило для примера, который я привел из документации.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как скачать строний файл?

Сообщение user »

yiiliveext писал(а): 2020.01.15, 00:12
user писал(а): 2020.01.15, 00:09 тут же динамический url http://example.org/param1=value1&param2=value2
Это правило для примера, который я привел из документации.
я ценю ваше желаение набить больше сообщений на форуме
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как скачать строний файл?

Сообщение yiiliveext »

user писал(а): 2020.01.15, 00:25 я ценю ваше желаение набить больше сообщений на форуме
Надо будет не забыть еще одного кретина в игнор добавить.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Как скачать строний файл?

Сообщение unknownby »

Каким образом появляется ваш динамический URL? Хотите вставить ссылку в Input и скачать? Или прописывать каждый раз в контроллер?
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как скачать строний файл?

Сообщение user »

unknownby писал(а): 2020.01.15, 08:04 Каким образом появляется ваш динамический URL? Хотите вставить ссылку в Input и скачать? Или прописывать каждый раз в контроллер?
это сторонний сервис, пример ссылки в теме
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Как скачать строний файл?

Сообщение someweb »

Код: Выделить всё

return Yii::$app->response->sendContentAsFile(file_get_contents("http://example.org/param1=value1&param2=value2"), ...)
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Ответить