koa 上传图片为什么不保存在写的路径上,求大神帮助一下
发布于 2 个月前 作者 Rock-1 699 次浏览 来自 问答
router.prefix('/upload');

//文件上传  
//配置  
var storage = multer.diskStorage({  
  //文件保存路径  
  destination: function (req, file, cb) {  
    cb(null, __dirname+ '../upload/')  
  },  
  //修改文件名称  
  filename: function (req, file, cb) {  
    var fileFormat = (file.originalname).split(".");  
    cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]);  
  }  
})  
//加载配置  
var upload = multer({ storage: storage });  
//路由  
router.post('/upLoadDoc', upload.single('file'), async (ctx, next) => {  
  console.log(ctx.request)
  ctx.body = {  
    filename: ctx.request.body.files.file.name//返回文件名  
  } 
9 回复

好吧,我是让前端上传图片。这种事情就不要增加我服务器的负载了。。。 我让客户端上传到sm.ms这个网站,然后他返回给我一个图片地址。。我数据库也只储存这个地址。。

@pengliheng 但是这有个问题,比如你要传到七牛云,那么,照你的流程,提交的所有过程都在前端,那我检查你的代码是不是就可以用你的七牛呢!

额,我是传图片到sm.ms这个网站,免费的。。 如果你想做上传图片到7牛实现cdn加速的化,确实存在key暴露的问题。。。。 前端上传图片需要 new FormDate()一个对象,然后把上传的file,push到这个新建的对象里面,,,不知道后端上传7牛的步骤是不是也一样?? var data = new FormData() this.setState({ files:e.target.files[0] }) data.append(“smfile”, this.state.files) fetch(‘https://sm.ms/api/upload’, { method: ‘POST’, body: data }).then( response => response.json() ).then( success => { this.state.socket.emit(‘send message’,{ size:this.state.files.size, imageUrl:success.data.url, avatorUrl:this.state.documentCookie.avatorUrl, time:this.state.time }); } )

@lfz900824 七牛会有权限验证

@hi363138911 我没用过七牛,只是按照你的逻辑,图片直接保存七牛,不通过后台,那你所有的权限认证也都是前段html提交的,只有图片是随机的,那不还是一样别人可以拿到你的权限认证么

@lfz900824 按照七牛文档是需要我们自己的后端给验证的,如果全部放在前端,会出现你所说的问题。

客户端(移动端或者Web端)上传文件的时候,需要从客户自己的业务服务器获取上传凭证,而这些上传凭证是通过服务端的SDK来生成的,然后通过客户自己的业务API分发给客户端使用。根据上传的业务需求不同,七牛云Node.js SDK支持丰富的上传凭证生成方式。

前端上传图片到七牛可能是疯了

@pengliheng 上传不是自己做的啊

我cdn加速没 做好,,所以就直接传别人服务器去了。。也省的存了。。

回到顶部