ios11,formdata图片上传失败?

新手上路,请多包涵

框架用的vue。

在上传之前需要压缩,开始用的canva进行压缩在上传,ios11图片无法上传,之后找了个插件,localResizeIMG。

think2011/localResizeIMG

结果,在安卓以及ios9、10测试都正常。ios11下图片仍然无法上传。可以打印出base64,以及转换的blob。

前台显示图片用的base64,传到后台的是blob。

开始以为是ios11图片格式HEIC的原因,之后用一张png格式图片测试。仍然不行。

rst.base64前台展示的,可以正常展示。

rst.file,传到后台,可以打印出来,blob格式

lrz(file[i])
.then(function(rst) {
// 处理成功会执行
var img = new Image();
img.src = rst.base64;
console.log(rst.base64)
img.onload = function() {
    vm.images.push(rst.base64);
        vm.fourimages.push(rst.file)
}
console.log(rst.formData)
console.log(rst.file)
if(vm.images.length > 6) {
    vm.images.length = 6;
    vm.$dialog.toast({            
        mes: '最多上传6张!',            
                timeout: 1500,
        icon: 'error',
    });
}
})
.catch(functerr) {
// 处理失败会执行
})
.always(function() {
// 不管是成功失败,都会执行
});
let formData = new FormData()
for(var l = 0; l < this.$store.state.images.length; l++) {
    formData.append('images[]', this.$store.state.images[l], "img" + [l] + ".jpeg");
}
let config = {
     headers: {
    'Content-Type': 'multipart/form-data'
    }
}
this.$http.post(url, formData, config).then(function(res) {
    if(res.status === 200) {
        this.$dialog.loading.close();
        this.$dialog.toast({
            mes: res.body.info,
            timeout: 1500,
            icon: 'success'
        });
        this.$router.push({
            path: '/'
        })
    }
})
阅读 6k
4 个回答

。。。我也遇到这个问题了,ios11才有这个问题,你咋解决的?

新手上路,请多包涵

楼主解决了吗,请教

新手上路,请多包涵

你好,我现在遇到一样的问题了,就是使用axios+formData, ios11 系统上传图片,传给后台,图片大小是0,其他系统都可以,我特么。。。 请问怎么解决呢? 这问题困扰我一天了。。。

新手上路,请多包涵

去掉'Content-Type': 'multipart/form-data'头部声明,让浏览器自动生成。自定义的头部缺少了二进制数据分割标识,导致服务端无法解析。

https://developer.mozilla.org...
推荐问题