Как опубликовать multipart в реакции нативной с RNFetchBlob или любым другим способом - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь отправить многокомпонентный запрос в реагировать нативно.Я пробовал много способов, но ни один из них не работал.Пожалуйста, проверьте этот пример.

const data ={
        "person": this.state.person,
        "email": this.state.email,
        "password":this.state.password,
        "confirmPassword":this.state.confirmPassword,
        "otp": {
            "secret":this.state.otp
        },
    }



  RNFetchBlob.fetch('POST', '${server}api/user-registration/register', {
        'Content-Type' : 'multipart/form-data',
    }, [
        {
            name:"data",data:JSON.stringify(data)
        }
    ]).then((resp) => {
       console.log(resp)
    }).catch((err) => {
       console.log(err)
    })

Я получаю 415 в качестве ответа.Похоже, он не помещает multipart / form-data в заголовки.

Я уже пробовал это с Reactjs, и он полностью работает.Это пример в Reactjs.

  const eventData = new FormData();
eventData.append('data', new Blob([JSON.stringify(data)], { type: "application/json" }));

axios.post('${server}api/user-registration/register',eventData,{headers:{}})

Кто-нибудь может увидеть какие-либо проблемы с кодом RNFetchBlob?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вы можете использовать библиотеку с именем axios.

let formData = new FormData();
formData.set("field1", field1_value);

и сделать запрос на публикацию, используя axios:

axios({
    method: "POST",
    url: "<put-your-url-here>",
    data: formData,
    config: {
        headers: {
            'Content-Type': "multipart/form-data"
        }
    }
}).then(response=>handler).catch(error=>errorHandler);

Здесь handler - это функция, котораяпринимает ответ в качестве входных данных и обрабатывает его, а errorHandler является функцией, которая принимает ошибку и обрабатывает ее.

0 голосов
/ 27 сентября 2019

Используйте это как обычный текст

const body = new FormData();
body.append('data', JSON.stringify(data));

Используйте этот код для файла

const body = new FormData();
body.append('img', { name: 'img.jpg', type: 'image/jpg', uri: 'url for image or video' });

Тогда обычновызовите API с помощью этого или собственного метода

fetch('url', {
   method: 'post',
   body
}).then(a=>a.json()).then(() => {
   *code what you want*
});
...