使用axios在本机反应中发送文件时出现网络错误

时间:2020-05-24 16:00:13

标签: react-native axios

我正在尝试使用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模拟器进行测试

1 个答案:

答案 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'
}
})