如果未指定文件名,下载管理器将下载一个 bin 文件 (Google Cloud Storage URL)

Download manager downloads a bin file if file name not specified (Google Cloud Storage URL)

我有一个 Google 云存储下载 link,我正在使用 Android DownloadManager 下载文件,当我下载文件时没有指定文件名,它最终下载了.bin 文件。

还有一件事是:如果我尝试从 chrome 浏览器手动下载 link,它工作得很好。

fun  downloadFile() {
    val uri = Uri.parse("...") //link to the file
    Environment
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
        .mkdirs()

    val request =
        DownloadManager.Request(uri)
            .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
            //.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.jpg")

    val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
    downloadID = downloadManager.enqueue(request)
}

一般来说,对于 HTTP,要下载具有所需文件名的文件,服务器必须将 Content-Disposition header 设置为类似 attachment; filename="filename.jpg" 的内容。这可以在 GCS 中使用 metadata 进行设置。以这种方式设置 content-disposition 后,DownloadManager 在选择文件名时应该遵守它。