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。


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
HTML select 下拉列表
JavaScript requestAnimationFrame 定时刷新
JavaScript 窗口/文档事件
如何使主题支持 Woocommerce
CSS 改变 svg 图片颜色
WordPress 文章页作者信息 get_the_author() 和 get_the_author_meta()
JavaScript 基本语法
WordPress 密码生成和密码验证