做了一个功能,从客户的钉钉跳转我们的网站,但是客户反应钉钉无法上传图片
首先考虑的是苹果和安卓系统的问题,在浏览器测试的,发现ios15以下的可以正常上传,15以上的报错,本地没问题,正式服报错.此处问题后台通过改图片格式判断解决了(不知道什么原理)
然后考虑到钉钉内置浏览器的问题,检查ios钉钉和安卓的打印,formdata不一样
ios钉钉打印结构为
{
appendData:{},
realFormData:{}
}
正常结构
修改代码
// 去上传至服务器
const formData = new FormData();
formData.append('file', _.file);
this.$httpRequest({
axiosConfig: {
url: `${this.api + this.resourceType}`,
method: 'post',
data: formData,
//以下为修改代码
transformRequest: [function (data, headers) {
// 去除post请求默认的Content-Type
delete headers.post['Content-Type'];
return data;
}],
//以下为原代码
// headers: {
// 'content-type': 'multipart/form-data',
// },
},
}).then((res) => {
const data = res.Data;
Object.assign(_, data.Files[0]);
Object.assign(_, {
status: 'done',
message: '上传成功',
UploadDate: data.UploadDate,
Uploader: data.Uploader,
UploaderId: data.UploaderId,
FileSize: data.Files[0].FileSize || data.Files[0].Length,
FilePath: data.Files[0].FilePath || data.Files[0].RelativePath,
IsFolder: false,
});
}).catch((err) => {
Object.assign(_, {
status: 'failed',
message: '上传失败',
});
});
});