【发布时间】:2019-09-02 00:42:41
【问题描述】:
我正在尝试让用户使用 Koa 框架上传文件,将其存储在服务器端并允许稍后再次下载。
当使用koa-body上传文件时,上传的文件没有扩展名和随机字符串,如何以原始文件名和扩展名作为下载文件?
我在网上找到的所有在线示例都假定文件以原始文件名上传,此处并非如此。
const bodyparser = require('koa-body');
app.use(bodyparser({
formidable: { uploadDir: './uploads' },
multipart: true,
basedir: './views',
apps: app,
}));
文件被正确上传到上传文件夹,但文件名和扩展名被删除并替换为随机字符串。 (例如upload_1d421fb33fcd1d43efc41352975358da)
router.post('/add', add);
router.get('/download/:filename', getDownload);
async function add(ctx) {
const { body } = ctx.request;
const thingfile = await ctx.request.files.thingfile;
things.push({ name: body.thing, file: thingfile });
ctx.redirect('/');
}
async function getDownload(ctx) {
const {filename} = ctx.params;
ctx.attachment(filename);
await send(ctx, fname, { root: __dirname + '/uploads' });
}
我可以在调用 URL/uploads/upload_1d421fb33fcd1d43efc41352975358da 时下载文件,但必须在客户端手动重命名文件才能正常工作。
显然我遗漏了一些东西,或者我做错了。 我有点迷路了,所以提前感谢你引导我回到正轨!
【问题讨论】:
标签: koa