How to post multipart/formdata using fetch in react-native?

后端 未结 3 1536
广开言路
广开言路 2021-02-09 14:13

\"reference

i want to post Form Data like that.

what should i prepare for sending ima

相关标签:
3条回答
  • 2021-02-09 14:44

    You should have an upload function, which should look like this:

    upload(url, data) {
      let options = {
        headers: {
          'Content-Type': 'multipart/form-data'
        },
        method: 'POST'
      };
    
      options.body = new FormData();
      for (let key in data) {
        options.body.append(key, data[key]);
      }
    
      return fetch(requestUrl, options)
          .then(response => {
            return response.json()
              .then(responseJson => {
                //You put some checks here
                return responseJson;
              });
          });
    }
    

    And you call it this way, sending the image blob path:

    this.upload('http://exampleurl.com/someApiCall', {
      file: {
        uri: image.path,
        type: image.mime,
        name: image.name,
      }
    }).then(r => {
      //do something with `r`
    });
    
    0 讨论(0)
  • 2021-02-09 14:49

    React Native code

    fetch("url" ,{
    
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
    
        method:'POST',
    
        body: JSON.stringify(this.state.imageholder)
    
    }).catch(function(error) {
    
    console.log('There has been a problem with your fetch operation: ' + error.message);
    
    throw error;
    
    });
    

    Spring boot code

     @PostMapping(value="/",consumes = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<?> saveCustomerOrder(@RequestBody String[] file) throws SerialException, SQLException {
    
        TestImg imgObj=null;
    
        for (String img : file) {
            imgObj=new TestImg();
            byte[] decodedByte = Base64.getDecoder().decode(img);
            Blob b = new SerialBlob(decodedByte);
            imgObj.setImg(b);
            testRepo.save(imgObj);
    
        }
    
    0 讨论(0)
  • 2021-02-09 14:52

    You need to create an instance of FormData and pass that as the body to fetch, like so:

    const data = new FormData()
    data.append("something", something)
    
    fetch(url, { method: 'POST', body: form })
    
    0 讨论(0)
提交回复
热议问题