Fuel android 下载大文件
Fuel android download big size files
我在我的 Android 代码中使用 Fuel 来下载 PDF、音频、视频等内容,它运行良好,当我想下载大文件(50 MB 和 > 文件)时出现问题。
我阅读了有关 Fuel streamDestination 的信息,但不知道如何解决此问题。
这是我的代码:
Fuel.download("https://$url")
.fileDestination { response, url ->
File(path, fileName)
}
.timeout(5000)
.response { request, response, result ->
result.fold(
success = {
progressDialog.dismissDialog()
listener.onDocDownloaded(fileName)
},
failure = {
progressDialog.dismissDialog()
}
}
我找到 solution 感谢 Derk-Jan Karrenbeld。
在这里我只放了工作代码:
val outputStream = FileOutputStream(File(filePath))
_downloadStatus.postValue(FileDownloadStatus.Downloading)
Fuel.download(httpsedUrl)
.streamDestination { response, _ -> Pair(outputStream, { response.body().toStream() }) }
.fileDestination{response, request ->
File(filePath)
}
.progress { readBytes, totalBytes ->
val progress = readBytes.toFloat() / totalBytes.toFloat() * 100
println("Bytes downloaded $readBytes / $totalBytes ($progress %)")
}
.response { result ->
result.fold(
success = {
_downloadStatus.postValue(FileDownloadStatus.Downloaded)
},
failure = {
_downloadStatus.postValue(it.message?.let { it1 -> FileDownloadStatus.Failed(it1) })
}
)
}
我在我的 Android 代码中使用 Fuel 来下载 PDF、音频、视频等内容,它运行良好,当我想下载大文件(50 MB 和 > 文件)时出现问题。 我阅读了有关 Fuel streamDestination 的信息,但不知道如何解决此问题。 这是我的代码:
Fuel.download("https://$url")
.fileDestination { response, url ->
File(path, fileName)
}
.timeout(5000)
.response { request, response, result ->
result.fold(
success = {
progressDialog.dismissDialog()
listener.onDocDownloaded(fileName)
},
failure = {
progressDialog.dismissDialog()
}
}
我找到 solution 感谢 Derk-Jan Karrenbeld。 在这里我只放了工作代码:
val outputStream = FileOutputStream(File(filePath))
_downloadStatus.postValue(FileDownloadStatus.Downloading)
Fuel.download(httpsedUrl)
.streamDestination { response, _ -> Pair(outputStream, { response.body().toStream() }) }
.fileDestination{response, request ->
File(filePath)
}
.progress { readBytes, totalBytes ->
val progress = readBytes.toFloat() / totalBytes.toFloat() * 100
println("Bytes downloaded $readBytes / $totalBytes ($progress %)")
}
.response { result ->
result.fold(
success = {
_downloadStatus.postValue(FileDownloadStatus.Downloaded)
},
failure = {
_downloadStatus.postValue(it.message?.let { it1 -> FileDownloadStatus.Failed(it1) })
}
)
}