Загрузка потока ответов laravel возвращает пустой файлPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрузка потока ответов laravel возвращает пустой файл

Сообщение Anonymous »

У меня есть метод контроллера, который получает запрос пользователя на загрузку и вызывает конечную точку REST API с запрошенными параметрами тела.

API в свою очередь отправляет файл.< /p>

Я использую Guzzle для выполнения запросов API и laravel версии 5.4.

Содержимое $response->getBody()->getContents(); выглядит так:

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

"""
request_id\ts_sku\tr_product_url\thuman_verdict\n
199\tSG-948\thttps://www.amazon.com/gp/offer-listing/B076CP7J4P?condition=new\tMatch\n
199\tZIB-601\thttps://www.amazon.com/gp/offer-listing/B07D9PN39C?condition=new\tMatch\n
199\tRCM-LG526\thttps://www.amazon.com/gp/offer-listing/B07FDJ3W7P?condition=new\tMatch\n
199\tGSI-335\thttps://www.amazon.com/gp/offer-listing/B07GNX1VSG?condition=new\tMatch\n
199\tZIB-489\thttps://www.amazon.com/gp/offer-listing/B07D9RCGXM?condition=new\tMatch\n
"""
Также полученный ответ заголовка от API:

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

Content-Type : ('text/tab-separated-values', none)
Content-Disposition : attachment; filename=/path/to/file1.tsv
Я пытаюсь получить этот файл в свой контроллер и вернуть ответ в виде потока загрузки в браузер пользователя.

Вот метод контроллера:

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

    $client = new Client(["base_uri" => $this->apiBaseUrl]);
$url = 'download/filterdownload/';

try {
$response = $client->request('POST', $url, ['headers'=>['Content-Type' => 'application/json'], 'body'=>json_encode($filterArr)]);
# $resArr = json_decode($response, true);
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}

if(!empty($resArr) && array_key_exists('response', $resArr))
return redirect()->back()->with('error', $resArr['response']);

# return response
$file = $response->getBody()->getContents();

$file_name = $filterArr['client_name'].'_'.Carbon::now()->toDateString().'.tsv';
$headers = [
'Content-Disposition' => 'attachment; filename='. $file_name. ';'
];
return response()->stream(function () {
$file;
}, 200, $headers);
При этом загружается файл, но он пуст.

Подробнее здесь: https://stackoverflow.com/questions/589 ... empty-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»