如何在React Native中使用axios将图像上传到服务器?

时间:2018-10-16 07:42:36

标签: javascript node.js react-native ecmascript-6

我想在本机中将图像作为文件发送到服务器。我怎样才能做到这一点? 这是我的代码:-

export const editUserProfile = (sessionId,firstName,lastName,image,countryCode,phone) => 
new Promise((resolve,reject) => {

    const form = new FormData();
    form.append('image',{
        uri : image,
        type : 'image/jpeg',
        name : 'image.jpg'
    })
        return axios.post(base_url+'edit-profile',{
            session_id : sessionId, 
            firstname : firstName,  
            lastname : lastName,
            image : null,  
            country_code : countryCode, 
            phone : phone, 
            locale : 'en'
        }).then(response =>     
            {resolve(response)})
        .catch(error => 
            {reject(error)});
    });

3 个答案:

答案 0 :(得分:2)

//edit user profile
export const editUserProfile = 
    (sessionId,firstName,lastName,image,countryCode,phone) => 
new Promise((resolve,reject) => {

    var data = new FormData();
    data.append('session_id',sessionId);
    data.append('firstname',firstName);
    data.append('lastname',lastName);
    data.append('image',
      {uri:image,name:'userProfile.jpg',type:'image/jpg'});
    data.append('country_code',countryCode);
    data.append('phone',phone);
    data.append('locale','en');

        return axios.post(base_url+'edit-profile',data).then(response =>     
            {resolve(response)})
        .catch(error => 
            {reject(error)});
    });

答案 1 :(得分:1)

浪费了一整天后,我才找到解决方案。 首先找到图像的文件路径。我的就是这个。

file:///storage/emulated/0/Pictures/f5ca988c-882d-4b5e-86bb-b47939909b09.jpg

从此更改为

file://storage/emulated/0/Pictures/f5ca988c-882d-4b5e-86bb-b47939909b09.jpg 有效 :)。只需删除第三个反斜杠即可。

答案 2 :(得分:0)

我在这个问题上也停留了一周。经过研究,我发现我们正在从RN向服务器发送超过10MB的文件,而这些文件将无法到达服务器。您可以调整图像大小并发送到服务器。这个包裹对我有帮助。 https://github.com/bamlab/react-native-image-resizer