【问题标题】:Download file using token based API [closed]使用基于令牌的 API 下载文件 [关闭]
【发布时间】:2017-08-26 23:43:31
【问题描述】:

我正在使用 Vue.js(前端)+ Laravel(后端)创建一个 Web 应用程序,并且我构建了整个应用程序以与后端通信通过 api 路由。请求通过中间件使用令牌(Laravel 中的护照)进行身份验证。在某些时候我需要下载一些文件,但我不知道如何实现它,因为我无法通过网络路由识别或验证用户。我可以通过 ajax 请求从 API 发送字节数据,但是很难让用户从 javascript 下载文件(至少很难让每个浏览器都工作)。

那么解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: javascript php laravel vue.js token


    【解决方案1】:

    我们最近不得不解决这个问题。

    首先我们通过ajax请求发送文件流,然后通过HTML5文件API下载文件,但是对于> 5MB的文件会导致很多问题。

    我们最后实施的并且听起来最好的解决方案是创建一个带有一些临时令牌的临时文件 URL,以便下载该文件。到期时间为 5 分钟或任何适合您需要的时间。在您的 API 调用中发送该新 URL 并在新选项卡中打开或下载或您想做的任何其他事情。

    编辑: 我们使用 Amazon s3 进行存储,因此身份验证不是问题,但您需要对身份验证层进行更改,以允许在没有令牌的情况下访问临时 URL 以到达您的临时文件处理控制器。

    【讨论】:

    • 感谢您的快速回答。我应该对身份验证层进行哪些更改以允许没有令牌的临时 URL 访问?
    • 在您的情况下,我猜您不需要进行任何更改,只需创建一个新路由“/fileDownload”并且不要在其上指定身份验证中间件。我对 Laravel 不熟悉,所以无法准确判断。但是从文档中看到,您指定了这样的中间件, Route::get('/user', function () { // })->middleware('auth:api');只是不要为您的临时 url 路由这样做
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2014-07-19
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多