RNFetchBlob blob 在 close() 之后没有被删除
RNFetchBlob blob not being removed after close()
我正在使用 RNFetchBlob
从本地 (ios) 文件系统将图像上传到 Firebase
虽然我的图像正在被删除,但我的 blob 在关闭后仍保留在文件系统中。
我尝试取消链接 blob,但它仍然存在
function createBlob(uri, mediaType) {
const Blob = RNFetchBlob.polyfill.Blob;
const typePrefix = isImage(mediaType) ? 'image' : 'video';
window.Blob = Blob;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
return new Promise((resolve, reject) => {
const uid = guid();
const mediaRef = firebase.storage().ref('users').child(`${uid}.${mediaType}`);
let uploadBlob = null;
Blob.build(uri, { type: `${typePrefix}/${mediaType}` })
.then((blob) => {
uploadBlob = blob;
return mediaRef.put(blob, { type: `${typePrefix}/${mediaType}` });
})
.then((response) => {
uploadBlob.close();
resolve(response);
})
.catch(error => {
reject(error);
});
});
}
这是关闭 blob 后它在我的模拟器文件夹中的样子
在 createBlob
之后,我正在使用 RNFetchBlob.fs.unlink(path)
从本地存储中删除文件
我认为你 close()
没有工作,因为 uploadBlob
变量是在上一个闭包中创建的,但没有传递到下一个 .then
块。我认为这可能有用...
Blob.build(uri, { type: `${typePrefix}/${mediaType}` })
.then((blob) => {
uploadBlob = blob;
return ({
response: mediaRef.put(blob, { type: `${typePrefix}/${mediaType}` }),
blob: uploadBlob
})
.then(({response, blob}) => {
blob.close();
resolve(response);
})
我正在使用 RNFetchBlob
从本地 (ios) 文件系统将图像上传到 Firebase虽然我的图像正在被删除,但我的 blob 在关闭后仍保留在文件系统中。 我尝试取消链接 blob,但它仍然存在
function createBlob(uri, mediaType) {
const Blob = RNFetchBlob.polyfill.Blob;
const typePrefix = isImage(mediaType) ? 'image' : 'video';
window.Blob = Blob;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
return new Promise((resolve, reject) => {
const uid = guid();
const mediaRef = firebase.storage().ref('users').child(`${uid}.${mediaType}`);
let uploadBlob = null;
Blob.build(uri, { type: `${typePrefix}/${mediaType}` })
.then((blob) => {
uploadBlob = blob;
return mediaRef.put(blob, { type: `${typePrefix}/${mediaType}` });
})
.then((response) => {
uploadBlob.close();
resolve(response);
})
.catch(error => {
reject(error);
});
});
}
这是关闭 blob 后它在我的模拟器文件夹中的样子
在 createBlob
之后,我正在使用 RNFetchBlob.fs.unlink(path)
我认为你 close()
没有工作,因为 uploadBlob
变量是在上一个闭包中创建的,但没有传递到下一个 .then
块。我认为这可能有用...
Blob.build(uri, { type: `${typePrefix}/${mediaType}` })
.then((blob) => {
uploadBlob = blob;
return ({
response: mediaRef.put(blob, { type: `${typePrefix}/${mediaType}` }),
blob: uploadBlob
})
.then(({response, blob}) => {
blob.close();
resolve(response);
})