Менеджер загрузок Android загружает поврежденный файл / не удается открыть файл после загрузки / модифицируйте маркер аутентификации, используемый при загрузке маны

#android #kotlin #retrofit #android-download-manager #laravel-authorization

Вопрос:

Я пытаюсь загрузить файл с сервера, и после завершения загрузки загруженный файл не распознается телефоном. Я установил тип mime из расширения файла загруженного файла, и сервер использует токен на предъявителя, поэтому я передал токен в качестве заголовка, но файл все еще поврежден. Кстати, я использую retrofit для получения токена на предъявителя после входа в систему. API был создан с использованием laravel. Моя гипотеза заключается в том, что менеджеру загрузок не разрешается загружать файл, так как он не аутентифицирован, и полученный мной токен применяется только к запросам на обновление приложения. Извините за мой плохой английский, в любом случае, вот мой запрос на загрузку.

 val downloadBaseUrl = "https://ticaphub.com/event-files/" val urlRequest = downloadBaseUrl   filepath val request = DownloadManager.Request(Uri.parse(urlRequest)) val downloadManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager val title = URLUtil.guessFileName(urlRequest, null, null) val cookie = CookieManager.getInstance().getCookie(urlRequest)   request.setTitle(title)  request.setDescription("Downloading File Attachments.")  request.addRequestHeader("Authorization", "Token "   this@TaskDetailsActivity  .getSharedPreferences("loginCredential", Context.MODE_PRIVATE)  .getString("userToken", "0"))  request.addRequestHeader("cookie", cookie)  request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)  request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, clickedItem.name)  request.setMimeType(getMimeFromFileName(urlRequest))  downloadManager.enqueue(request)  

//Функция, которую я использую для получения типа MIME файла

 private fun getMimeFromFileName(url: String): String {  return URLConnection.guessContentTypeFromName(url) }  

Комментарии:

1. В каком смысле загруженный файл поврежден? Начните с размера файла в байтах. Это то же самое?

2. Менеджеру загрузки не нужен миметип. Каждый файл может обрабатываться так же, как и просто поток байтов.

3. the downloaded file is not recognized by the phone. Я понятия не имею, что вы имеете в виду под этим. Если вы загружаете файл, то все байты файла должны быть равны оригиналу. Все начинается с одинаковых размеров файлов. После загрузки вы можете попытаться что-то сделать с файлом. Но это уже другая история и не имеет никакого отношения к загрузке. Я не знаю, в чем у тебя проблема. Расплывчатые формулировки.