axios上传图片遇到的问题

1.node.js 的express服务器报 413 payload too large

express 4.0后版本


var bodyParser = require('body-parser');

app.use(bodyParser.json({limit: '50mb'}));

app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));


https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/413



2. 按说axios里会对数据类型做判断,是formdata的话会放弃设置请求头,改由浏览器设置。

你自己设置的话不知道会不会少一个叫boundary的东西我不太清楚。


axios源码里有这个,所以对于formData数据是不需要设置header的应该。


if (utils.isFormData(requestData)) {

  delete requestHeaders['Content-Type']; // Let the browser set it

}


Postman测试上传接口的时候,也应该把header中的content-type删除掉。


3. this.$http({

    method: 'POST',

    url: this.server_path+'/api/users/'+user_id+'/avatar?key='+app_key,

    data: querystring.stringify({

        avatar: that.avatar

    })

})

现在这样可以直接在服务端通过req.body.avatar获取base64的图片,却显示还需要转换。然后转换以后再截图,总觉得有些麻烦。所以干脆FileReader.readAsDataURL来的base64只用来预览,上传图片,使用自己组装的FormData。


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
版权相关
Node.js 安装第三方模块
WordPress 数据库操作
WordPress RESTful API 路由代码结构
WordPress 插件开发
JWT 存储在 Cookie 和 Web Storage 的区别
Node.js 控制台进度条实现原理
用 JavaScript 实现数字增加滚动动画