我正在尝试使用axios从react native将文件发送到nodejs服务器,这是我的代码:
const createFormData = (file) => {
const data = new FormData();
data.append('message', text);
data.append('receiver',doctorid);
if(file !== ''){
data.append('file', {
type: file.type,
uri: file.uri,
name: file.name.replace(/\s/g,'')
})
}
return data;
}
const onSend = async() => {
const newMessages = [...messages]
newMessages.push({"sender": currentuserID, "id": 339, "message": 'sending...', "attachment": '', "receiver": doctorid, "type": 0},)
setMessages(newMessages)
const token = await AsyncStorage.getItem('token');
const data = createFormData(singleFile)
await appApi.post('/chats', data, {
headers: { 'Authorization': 'Bearer ' + token }
}).then(()=>{
socket.emit('sendmessage', text, (err) => {
messageInit()
});
})
.catch(err => console.log(err.message))
}
如果没有附加图像,则此代码可以完美运行,但是如果附加图像,则我会立即收到网络错误消息。
为了进行一些故障排除,我尝试使用ngrok将请求发送到本地计算机。从ngrok,我意识到请求根本没有发送到url。因此,它只是立即失败,而没有对该URL发出请求。
任何对此有解决方案的人。
我正在使用android模拟器进行测试
答案 0 :(得分:0)
使用formdata发送 试试这个
let formData = new FormData();
let imagefile = document.querySelector('#file');
formData.append("image", imagefile.files[0]);
axios.post('upload_file', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})