Convert image path to blob react native

后端 未结 4 2141
隐瞒了意图╮
隐瞒了意图╮ 2021-02-19 04:21

Problem

I am trying to create an app with react native and firebase. One of the features I would like for this app is the ability to upload images. I

4条回答
  •  没有蜡笔的小新
    2021-02-19 04:49

    You need to install rn-fetch-blob module:

    npm install --save rn-fetch-blob
    

    Then, do the following:

    import RNFetchBlob from 'rn-fetch-blob';
    
    const Blob = RNFetchBlob.polyfill.Blob;
    const fs = RNFetchBlob.fs;
    window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
    window.Blob = Blob;
    
    function uploadImage(path) {
        const imageFile = RNFetchBlob.wrap(path);
    
        // 'path/to/image' is where you wish to put your image in
        // the database, if you would like to put it in the folder
        // 'subfolder' inside 'mainFolder' and name it 'myImage', just 
        // replace it with 'mainFolder/subfolder/myImage'
        const ref = firebase.storage().ref('path/to/image');
        var uploadBlob = null;
    
        Blob.build(imageFile, { type: 'image/jpg;' })
            .then((imageBlob) => {
                uploadBlob = imageBlob;
                return ref.put(imageBlob, { contentType: 'image/jpg' });
            })
            .then(() => {
                uploadBlob.close();
                return ref.getDownloadURL();
            })
            .((url) => {
                // do something with the url if you wish to
            })
            .catch(() => {
                dispatch({
                    type: UPDATE_PROFILE_INFO_FAIL,
                    payload: 'Unable to upload profile picture, please try again'
                });
            });
    }
    

    Please do ask if there's any part of the code that you don't understand. To upload multiple images, simply wrap this code with a for loop. Or if you want to make sure that every image is uploaded without any error, use Promise

提交回复
热议问题