1

我正在使用 Laravel vapor 来托管我的应用程序,但在从 AWS S3 下载某些文件类型时遇到问题。我想知道这是否是请求标头不允许这些文件类型的 CloundFront 问题。由于我能够很好地下载 PNG、JPG、PDF 文件,我只是遇到了 DOCX 和 XLSX 等文件的问题。在我的 API 中,我只是使用 Storage 门面来流式传输下载。

    /**
     * Download file from storage
     * @param Document $document
     * @return StreamedResponse
     */
    public function download(Document $document): StreamedResponse
    {
        return Storage::disk('s3')->download($document->path);
    }

这是我认为已设置的请求标头

accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

这是抛出的错误

在此处输入图像描述

4

1 回答 1

0

能够通过对 S3 存储中的项目建立临时链接来解决问题,然后重定向到初始化下载。

    public function download(Document $document): RedirectResponse
    {
        $url = Storage::temporaryUrl(
            $document->path
            now()->addMinutes(30)
        );

        return Redirect::away($url);
    }

来自 Vapor Docs 的参考:https ://docs.vapor.build/1.0/projects/development.html#binary-responses

于 2021-07-30T14:27:27.893 回答