【发布时间】:2021-07-19 17:31:32
【问题描述】:
我尝试了几种通过 API 获取请求下载 mp3 文件的方法。我感觉好像我很接近但似乎无法下载。
我的网址返回一个二进制 mp3 文件。
这是我在随 get 请求返回的响应标头数组中得到的部分内容。希望这会有所帮助。
"Content-Disposition" => array:1 [
0 => "attachment; filename=RE3e327a2615b93f528fee111da9b60e17.mp3; filename*=UTF-8''sample.mp3"
]
这是我在 Laravel 中使用 Guzzle 客户端的代码示例。尝试 Laravel 的下载方法,但我相信我需要从 Content-Disposition 获取实际文件。非常感谢任何帮助。谢谢。
$client = new Client();
try {
$url = 'http://getmp3website.net/recording/sample.mp3';
$response = $client->request('GET', $url,
[
'headers' => [
'Authorization' => 'bearer ' . env("AUTH_TOKEN"),
'Content-Type' => 'audio/mp3',
],
]);
return response()->download($response);
} catch (Exception $ex) {
return $ex;
}
【问题讨论】:
-
那么到底出了什么问题?不清楚
-
我无法在浏览器中下载文件。我确实添加了这段 javascript,但无法让它工作。正在尝试粘贴脚本。
-
`console.log("data", response.data); const url = window.URL.createObjectURL(new Blob([response.data]));常量链接 = document.createElement('a');链接.href = 网址; link.setAttribute('下载', 'file.mp3'); document.body.appendChild(link);链接.click();`
-
您是否尝试在浏览器中通过 Ajax 下载文件?
-
“但我认为我需要从 Content-Disposition 中获取实际文件” - 除非您需要从那里提取文件名,否则我不明白为什么什么是必要的。 Laravel 的
download方法能否处理完整的 Guzzle 响应对象,或者您可能只需要使用$response->getBody()获取正文内容?
标签: php laravel download mp3 guzzle