使用jwt进行了路由鉴权
app.use(koajwt({
secret:"jianshu-server-jwt"
}).unless({
path: ['/user/login']
}))
koa-multer上传图片成功后,访问图片地址提示需要token,怎么解决?烦请知道的同学指点,谢谢
使用jwt进行了路由鉴权
app.use(koajwt({
secret:"jianshu-server-jwt"
}).unless({
path: ['/user/login']
}))
koa-multer上传图片成功后,访问图片地址提示需要token,怎么解决?烦请知道的同学指点,谢谢
如果使用koa2和koa-multer上传图片成功,但访问图片地址时提示需要token,很可能是上传后保存的文件路径和访问路径不匹配导致的。以下是一些可能的解决方案:
检查文件存储路径是否正确
在使用koa-multer上传文件时,我们需要使用“path”模块生成存储路径,并将其添加到文件上传中间件中。例如:
const multer = require('koa-multer');
const path = require('path');
const storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, callback) {
const ext = path.extname(file.originalname);
callback(null, Date.now() + ext);
}
});
const upload = multer({ storage: storage });
在这个例子中,我们指定存储路径为“./uploads”,表示上传的文件将会保存在该目录下。如果你访问的图片路径并不匹配该存储路径,你可以将路径更改为匹配的路径。
使用静态文件服务
如果你的应用程序使用了koa-static等静态文件服务中间件来提供图片文件服务,请确保将图片文件存储在静态目录中,中间件的静态目录应该与你的存储路径一致。例如:
const Koa = require('koa');
const path = require('path');
const serve = require('koa-static');
const app = new Koa();
// Serve the "uploads" directory as a static directory
app.use(serve(path.join(__dirname, './uploads')));
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
在这个例子中,“uploads”目录被提供为静态目录服务,“koa-static”中间件会自动将该目录下的文件提供为静态文件服务,你可以访问http://localhost:3000/uploads/目录下的文件。请注意,此时必须将存储路径和中间件的静态目录设置为相同的路径。
如果这些方法都无法解决问题,请检查你的应用程序中是否存在其他中间件或业务逻辑会影响图片访问,你可能需要仔细检查代码以找出问题的根源。