首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >axios下载每个带有txt扩展名的文件

axios下载每个带有txt扩展名的文件
EN

Stack Overflow用户
提问于 2021-06-10 22:29:00
回答 2查看 108关注 0票数 0

我尝试从服务器从laravel下载任何文件,但所有文件都是以.txt文件的形式下载的

这是我的javascript代码:

代码语言:javascript
复制
        downloadAttachment:function (id){
        axios({
            url: '/api/user/downloadFile/'+id,
            method: 'GET',
            responseType: 'blob',
        }).then((response) => {
            let fileURL = window.URL.createObjectURL(new Blob([response.data]));
            let fileLink = document.createElement('a');
            fileLink.href = fileURL;
            fileLink.setAttribute('download', response.data.type);
            document.body.appendChild(fileLink);
            fileLink.click();
        });
    }

拉威尔:

代码语言:javascript
复制
    public function downloadDocument($file)
{
    $path=$file->src;
    if(Storage::exists($path))
    {
        $file=Storage::get($path);
        $type=Storage::mimeType($path);
        $response = Response::make($file, 200);
        $response->header("Content-Type", $type);
        return $response;
    }
    abort(404);
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-11 01:47:00

请改用Storage::download

代码语言:javascript
复制
public function downloadDocument($file)
{
    $path = $file->src;

    if (Storage::exists($path)) {
        return Storage::download($path);
    }

    abort(404);
 }

这是docs

票数 2
EN

Stack Overflow用户

发布于 2021-06-14 03:38:34

呃..。为什么要浪费时间用axios将其作为blob下载,然后保存呢?为什么不直接下载fileLink.href = url,而不浪费任何内存呢?

似乎你要做的一切都是这样的:

代码语言:javascript
复制
location = '/api/user/downloadFile/' + id

或者这样:

代码语言:javascript
复制
<a href="/api/user/downloadFile/123">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67923218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档