本文整理汇总了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;
});