近期一個用react-native的項目,上傳圖片功能我們用的是FormDate,按照文檔的提示寫好代碼。
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運行之后一切ok,完美上傳!但是ios出現了問題,上傳都失敗了!!!說明發送的參數里面應該有ios無法識別的。找了半天,最后終于確定,是file里面的參數name出了問題。代碼如下:
this.props.onFileUpload(file,response.fileName||'未命名文件')
.then(result=>{
this.setState({
loading:false
})
})
因為react-native-image-picker的showImagePicker返回值里面沒有fileName,就改成了‘未命名文件’,沒有后綴,所以ios無法識別,導致上傳失敗。改成'未命名文件.jpg'就可以正常上傳了。