There are 2 things that I actually don’t know until read FormData implementation.
Image uploading
Yes, you can upload images! I’ve used react-native-file-upload until discovered how to use FormData in this case.
Using FormData in browser in very simple. For example, we have an input
. So we need just append File
object to FormData.
formData.append('username', 'Aleksei');
formData.append('userpic', myFileInput.files[0], 'doochik.jpg')
There is no File
object or Blob
in React Native. ImagePicker
or CameraRoll
gives us only file url, e.g., file://path/to/image.jpg
.
The solution is to add special object with uri
property as described in JSDoc
var photo = {
uri: uriFromCameraRoll,
type: 'image/jpeg',
name: 'photo.jpg',
};
var body = new FormData();
body.append('photo', photo);
body.append('title', 'A beautiful photo!')
Field value must be string
I think this is actually the bug at this place.
Example
var fd = FormData();
fd.append('foo', 'bar'); // works
fd.append('image', {uri: 'file:///'}); // works
fd.append('number', 1); // EXCEPTION
fd.append('boolean', true); // EXCEPTION