Создать путь загрузки для сгенерированных файлов в Django - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть сервер Django, на котором я создаю файлы, которые хочу загрузить в приложение для Android, которое я также создаю. Каждый из этих файлов имеет идентификационный номер, который будет иметь приложение для Android. Приложение для Android не будет знать названия файлов. Как я могу сгенерировать URL-адреса для загрузки, чтобы URL-адрес был похож на mysite.com/download/"int id of file"/, и тогда мое приложение для Android сможет загрузить его через DownloadManager?

Ниже приведен код, который я хочу использовать для достижения этой цели, но любые предложениядругие способы достижения этой цели приветствуются.

        String url = "customurl";

        DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
        request.setTitle("Downloading");
        request.setDescription("Downloading new titles");
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, "" + System.currentTimeMillis());
        request.allowScanningByMediaScanner();
        request.setAllowedOverMetered(true);
        request.setAllowedOverRoaming(true);
        long downloadReference = downloadManager.enqueue(request);
        if (downloadReference != 0) {
            Toast.makeText(getApplicationContext(), "download started", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(getApplicationContext(), "no download started", Toast.LENGTH_SHORT).show();
        }

1 Ответ

0 голосов
/ 14 декабря 2019

Я понял это. В итоге я добавил целочисленный аргумент к URL-адресу, который я создал для извлечения песен:

path('downloadsong/<int:pk>/', include('downloadsong.urls'))

Оттуда я использовал переданное целое число, чтобы получить путь к файлу из моегобазы данных и вернуть его:

        #get mp3 file
        file_data = None
        with open(mp3Path, "rb") as f:
            file_data = f.read()

        #return file
        response = HttpResponse(file_data, content_type='audio/mpeg')
        response['Content-Disposition'] = 'attachment; filename="{}"'.format(os.path.basename(mp3Path))
        return response

И тогда DownloadManager делает свое дело на телефоне. Надеюсь, это поможет кому-то в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...