如何使用 Vue/Laravel 下载 .docx 文档

Posted

技术标签:

【中文标题】如何使用 Vue/Laravel 下载 .docx 文档【英文标题】:How to download .docx documents with Vue/Laravel 【发布时间】:2021-02-08 12:13:41 【问题描述】:

我使用带有 Laravel API 的 Vue。我创建了一个文件管理器。 PDF 文件可以很好地下载。但是 .docx 文件在下载后已损坏。

控制器

    public function downloadFile(Request $request, File $file)
    
        $headers = array(
            'Content-Type: '.$file->mime_type,
        );
        return Storage::disk('local')->download($file->path, $file->name, $headers);
    

Vue/Vuex

export const downloadFile= ( commit , endpoint, file) => 
    return axios.get(endpoint).then((response) => 
        console.log(file.mime_type )
        let blob = new Blob([response.data],  type: file.mime_type )
        let link = document.createElement('a')
        link.href = window.URL.createObjectURL(blob)
        link.download = file.name
        link.click()
    )

当我从服务器下载 php Storm 中的文件时,文件没问题。因此,上传过程运行良好。

但我无法打开下载的文件。

我发现了一些关于 ob_clean 的东西,但不明白解决方案。

【问题讨论】:

你试过返回return Response::download($file, 'file_name.ext', $headers);吗?也可以在标题中添加内容长度 【参考方案1】:

我试过了,但对我也不起作用 不要使用 ajax 或 axios 使用 get-request 发送您的请求,并在您的函数中返回下载响应:

return response()->download(public_path('uploads/TestWordFile.docx'));

您不需要发送 ajax 请求。 使用 GET 并且当您返回一些响应时,页面不会被刷新! 这应该适合你

【讨论】:

【参考方案2】:

尝试使用 ....

public function downloadFile(Request $request, File $file)

    return Storage::disk('local')->download($file);

【讨论】:

以上是关于如何使用 Vue/Laravel 下载 .docx 文档的主要内容,如果未能解决你的问题,请参考以下文章

使用Ajax下载DOCX文档

docx文件下载

如何在 Vue 和 Laravel 中使用 axios 上传图像文件和数据对象?

使用 angularjs 从 PHP REST API 下载 docx 文件

使用 laravel 的 docx 文件下载系统 - vuejs

如何将word 文件.docx转成.PDF文件