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。


修改时间 2018-01-03

真诚赞赏,手留余香
赞赏
随机推荐
什么是DDD领域驱动设计?
阐述二维码的原理以及使用google api和PHP QR Code来生成二维码
PHP Xdebug 专题
windows mysql 自动备份的几种方法
PS手绘20171008
子元素margin-top对父元素的影响
ORDER BY 如何使用 PDO 参数绑定
line-height 属性
Webpack 使用 HtmlWebpackPlugin 简化了HTML文件的创建
MySQL 数据库如何存储时间?Datetime 和 Timestamp 之间的抉择