近期一個(gè)用react-native的項(xiàng)目,上傳圖片功能我們用的是FormDate辅斟,按照文檔的提示寫(xiě)好代碼转晰。
async function uploadFile(url, params, fileUrl,fileName) {
let Access_Token = await Storage.getItem('Access_Token');
let data = new FormData();
data.append('file', {
uri: fileUrl,
name: fileName,
type: 'image/jpeg'
});
Object.keys(params).forEach((key)=> {
if (params[key] instanceof Date) {
data.append(key, value.toISOString())
} else {
data.append(key, String(params[key]))
}
});
const fetchOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Access_Token': Access_Token ? Access_Token : '',
'UserAgent':os
},
body: data
};
return fetch(url, fetchOptions)
.then(checkStatus)
.then(parseJSON)
}
android運(yùn)行之后一切ok,完美上傳!但是ios出現(xiàn)了問(wèn)題士飒,上傳都失敗了2樾稀!酵幕!說(shuō)明發(fā)送的參數(shù)里面應(yīng)該有ios無(wú)法識(shí)別的扰藕。找了半天,最后終于確定裙盾,是file里面的參數(shù)name出了問(wèn)題实胸。代碼如下:
this.props.onFileUpload(file,response.fileName||'未命名文件')
.then(result=>{
this.setState({
loading:false
})
})
因?yàn)閞eact-native-image-picker的showImagePicker返回值里面沒(méi)有fileName,就改成了‘未命名文件’番官,沒(méi)有后綴庐完,所以ios無(wú)法識(shí)別,導(dǎo)致上傳失敗徘熔。改成'未命名文件.jpg'就可以正常上傳了门躯。