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。