喵恋 2023-06-19 22:02 采纳率: 50%
浏览 14
已结题

koa2中使用koa-multer上传图片成功后,访问图片地址提示需要token

使用jwt进行了路由鉴权

app.use(koajwt({
  secret:"jianshu-server-jwt"
}).unless({
  path: ['/user/login']
}))

koa-multer上传图片成功后,访问图片地址提示需要token,怎么解决?烦请知道的同学指点,谢谢

  • 写回答

2条回答 默认 最新

  • 卑微的Coder 2023-06-19 23:27
    关注

    如果使用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/目录下的文件。请注意,此时必须将存储路径和中间件的静态目录设置为相同的路径。

    如果这些方法都无法解决问题,请检查你的应用程序中是否存在其他中间件或业务逻辑会影响图片访问,你可能需要仔细检查代码以找出问题的根源。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 已采纳回答 6月20日
  • 创建了问题 6月19日

悬赏问题

  • ¥45 工程软件单片机设计课题要求
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。