本文整理匯總了TypeScript中react-native-fs.downloadFile函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript downloadFile函數的具體用法?TypeScript downloadFile怎麽用?TypeScript downloadFile使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了downloadFile函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: eventChannel
return eventChannel((emit) => {
const toFile = `${FILES_FOLDER}/${track.id}.mp3`
RNFS.downloadFile({
fromUrl: track.mp3Url,
toFile,
background: true,
begin ({ jobId }) {
currentDownloadJob.jobId = jobId
currentDownloadJob.trackId = track.id
},
progress ({ contentLength, bytesWritten }) {
emit(downloadProgress({
total: streamLength(contentLength),
receive: streamLength(bytesWritten),
id: track.id
}))
}
}).promise.then((_) => {
currentDownloadJob = Object.create(null)
emit(removeDownloadingItem(track.id))
emit(downloadSuccess({
...track,
mp3Url: toFile
}))
emit(END)
}).catch((err: Error) => {
currentDownloadJob = Object.create(null)
if (!err.message.includes('abort')) {
emit(downloadFailed(track))
emit(toastAction('error', `下載 ${track.name} 出現錯誤`))
}
emit(END)
})
return () => ({})
})
示例2: Promise
return new Promise((resolve, reject) => {
// get a temp path
let downloadSessionId = Math.round(10000 + Math.random() * 1e5).toString(36);
let tempFilename = downloadSessionId + '.tmp';
let tempPath = FileUtil.getPath(tempFilename);
tempPath = 'file://' + tempPath.replace("file://","");
targetPath = 'file://' + targetPath.replace("file://","");
LOGi.cloud('CloudCore:DownloadFile: ',downloadSessionId,'download requesting from URL:', url, 'temp:', tempPath, 'target:', targetPath);
// download the file.
RNFS.downloadFile({
fromUrl: url,
toFile: tempPath,
begin: callbacks.begin,
progress: callbacks.progress
}).promise
.then((status) => {
if (status.statusCode !== 200) {
// remove the temp file if the download failed
FileUtil.safeDeleteFile(tempPath)
.then(() => {
LOGi.cloud('CloudCore:DownloadFile:',downloadSessionId,' Download was not status 200:', status);
callbacks.success();
resolve(null);
})
.catch((err) => { LOGe.cloud("CloudCore:DownloadFile:",downloadSessionId," Could not delete file", tempPath, ' err:', err); });
}
else {
FileUtil.safeMoveFile(tempPath, targetPath)
.then((toPath) => {
// if we have renamed the file, we resolve the promise so we can store the changed filename.
LOGi.cloud('CloudCore:DownloadFile:',downloadSessionId,' Downloaded file successfully:', targetPath);
callbacks.success();
resolve(toPath);
})
.catch((err) => { LOGe.cloud("CloudCore:DownloadFile:",downloadSessionId," Could not move file", tempPath, ' to ', targetPath, 'err:', err); });
}
})
.catch((err) => {
LOGe.cloud("CloudCore:DownloadFile: ",downloadSessionId,"Could not download file err:", err);
FileUtil.safeDeleteFile(tempPath).catch((err) => { LOGe.cloud("CloudCore:DownloadFile: ",downloadSessionId," Could not delete file", tempPath, 'err:', err); });
reject(err);
})
});
示例3:
console.log('FILES UPLOADED!'); // response.statusCode, response.headers, response.body
} else {
console.log('SERVER ERROR');
}
})
.catch((err) => {
if (err.description === "cancelled") {
// cancelled by user
}
console.log(err);
});
const downloadProgress: RNFS.DownloadCallbackProgress = (result) => {
result.bytesWritten === 0;
result.contentLength > 10;
result.jobId;
};
const downloadBegin: RNFS.DownloadCallbackBegin = (result) => {
result.headers === {};
};
RNFS.downloadFile({
fromUrl: 'http://.txt',
toFile: 'file.txt',
begin: downloadBegin,
progress: downloadProgress
}).promise.then((response) => {
response.statusCode === 200;
});