I need to upload the pdf file to firebase storage. I am able to retrieve the URI of the document using react-native-document-picker. However, I am receiving errors while making a blob or converting the doc file to base64.
<code>// One approach of converting doc file to base 64. It converts it but fails when trying to upload // it to the storage giving "NativeFirebaseError: [storage/unknown]" error.
async handleURIConversionToBase64(uri) {
return RNFS.readFile(uri, 'base64').then(base64String =>
base64String
).catch(error => {
console.log('error while RNFS: ', error);
});
}
// Another approach of making a blob is giving me "RangeError: Failed to construct 'Response': The status provided (0) is outside the range [200, 599]." error.
async getBlob(uri) {
return fetch(uri).then(response => {
return response.blob().then(blobFile => {
return blobFile;
}).catch(error => {
console.log('error while blobbing: ', error);
});
}).catch(error => {
console.log('error while fetching: ', error);
});
}
</code>
<code>// One approach of converting doc file to base 64. It converts it but fails when trying to upload // it to the storage giving "NativeFirebaseError: [storage/unknown]" error.
async handleURIConversionToBase64(uri) {
return RNFS.readFile(uri, 'base64').then(base64String =>
base64String
).catch(error => {
console.log('error while RNFS: ', error);
});
}
// Another approach of making a blob is giving me "RangeError: Failed to construct 'Response': The status provided (0) is outside the range [200, 599]." error.
async getBlob(uri) {
return fetch(uri).then(response => {
return response.blob().then(blobFile => {
return blobFile;
}).catch(error => {
console.log('error while blobbing: ', error);
});
}).catch(error => {
console.log('error while fetching: ', error);
});
}
</code>
// One approach of converting doc file to base 64. It converts it but fails when trying to upload // it to the storage giving "NativeFirebaseError: [storage/unknown]" error.
async handleURIConversionToBase64(uri) {
return RNFS.readFile(uri, 'base64').then(base64String =>
base64String
).catch(error => {
console.log('error while RNFS: ', error);
});
}
// Another approach of making a blob is giving me "RangeError: Failed to construct 'Response': The status provided (0) is outside the range [200, 599]." error.
async getBlob(uri) {
return fetch(uri).then(response => {
return response.blob().then(blobFile => {
return blobFile;
}).catch(error => {
console.log('error while blobbing: ', error);
});
}).catch(error => {
console.log('error while fetching: ', error);
});
}
<code>// This is what I have tried so far. I have used stringDecodedURI and stringDecodedURIComponent // interchangeably but of no use. Also, I have used handleURIConversionToBase64 and getBlob but // nothing helped.
const stringDecodedURI = decodeURI(uri);
const stringDecodedURIComponent = decodeURIComponent(uri);
this.getBlob(`${stringDecodedURIComponent}/${fileName}`).then(blob => {
const storageRef = storage.ref(JobAssets.getStorageRefString(orgID, newJobAssetID));
const unsubscribe = storageRef.putFile(blob).on('state_changed',
snapshot => {
const progressNumber = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
const progress = progressNumber.toString().slice(0, 4);
this.setState({ progress });
},
err => {
console.log('error 1: ', err);
reject(err);
unsubscribe();
},
() => {
const url = storageRef.getDownloadURL();
console.log('url');
resolve(url);
this.setState({ fileUploading: false });
unsubscribe();
}
);
});
</code>
<code>// This is what I have tried so far. I have used stringDecodedURI and stringDecodedURIComponent // interchangeably but of no use. Also, I have used handleURIConversionToBase64 and getBlob but // nothing helped.
const stringDecodedURI = decodeURI(uri);
const stringDecodedURIComponent = decodeURIComponent(uri);
this.getBlob(`${stringDecodedURIComponent}/${fileName}`).then(blob => {
const storageRef = storage.ref(JobAssets.getStorageRefString(orgID, newJobAssetID));
const unsubscribe = storageRef.putFile(blob).on('state_changed',
snapshot => {
const progressNumber = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
const progress = progressNumber.toString().slice(0, 4);
this.setState({ progress });
},
err => {
console.log('error 1: ', err);
reject(err);
unsubscribe();
},
() => {
const url = storageRef.getDownloadURL();
console.log('url');
resolve(url);
this.setState({ fileUploading: false });
unsubscribe();
}
);
});
</code>
// This is what I have tried so far. I have used stringDecodedURI and stringDecodedURIComponent // interchangeably but of no use. Also, I have used handleURIConversionToBase64 and getBlob but // nothing helped.
const stringDecodedURI = decodeURI(uri);
const stringDecodedURIComponent = decodeURIComponent(uri);
this.getBlob(`${stringDecodedURIComponent}/${fileName}`).then(blob => {
const storageRef = storage.ref(JobAssets.getStorageRefString(orgID, newJobAssetID));
const unsubscribe = storageRef.putFile(blob).on('state_changed',
snapshot => {
const progressNumber = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
const progress = progressNumber.toString().slice(0, 4);
this.setState({ progress });
},
err => {
console.log('error 1: ', err);
reject(err);
unsubscribe();
},
() => {
const url = storageRef.getDownloadURL();
console.log('url');
resolve(url);
this.setState({ fileUploading: false });
unsubscribe();
}
);
});
Any help would be appreciated. TIA!