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。


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
MySQL 删除逗号分隔字段中的某一个值
WordPress 使用 shortcode() 增加编辑器功能
WordPress 侧边栏小工具
WordPress 增强编辑器功能
WordPress 添加自定义接口
用 JavaScript 实现数字增加滚动动画
Debian11 安装笔记2:编译安装PHP
CSS 媒体特性 prefers-color-scheme