【问题标题】:there is @adonisjs/drive at adonisjs 5?adonisjs 5 有@adonisjs/drive 吗?
【发布时间】:2020-11-02 17:40:31
【问题描述】:
最近我使用 adonis 5 作为后端,在我当前的项目中,我需要使用驱动器存储并在前端返回文件以供下载,这在带有 @adonisjs/drive 的 adonisjs 4.1 上是可行的,但我没有找到等效的方法在adonis 5 ¿ 我可以在adonisjs 5 中使用@adonisjs/drive 吗?或 ¿anoter 库我可以使用什么? ¿ 在 adonis 5 有等效的方法吗?我阅读了文档,但我只找到了请求文件方法,而不是将文件返回到前端的方法。
感谢您的回答
【问题讨论】:
标签:
javascript
node.js
adonis.js
【解决方案1】:
在撰写本文时(2020 年 11 月 24 日),Adonis Drive 尚未转换为 Adonis 5。因此,您现在无法将此包与版本 5 一起使用。
【解决方案2】:
另一种方法是使用上下文响应,如本节所述
https://docs.adonisjs.com/guides/response#download
// app/Controllers/Http/FilesController.ts
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import Application from '@ioc:Adonis/Core/Application'
export default class FilesController {
/**
*
* @param response
* @param params
*/
public async download({ response, params }: HttpContextContract) {
// projectname/tmp/uploads/world.txt
const filePath = Application.tmpPath(`uploads/${params.name}`)
return response.download(filePath)
}
}
// start/routes.ts
// example http://127.0.0.1:3333/file/world.txt
Route.get('/file/:name', 'FilesController.download')