Создайте архив zip для мгновенной загрузки

Standard Sizes

Существует три варианта стандартных размеров FAB (согласно developer.android ), которые можно установить с помощью app:fabSize.

  1. нормальный : кнопка нормального размера.
  2. mini : кнопка мини-размера.
  3. auto : размер, который будет меняться в зависимости от размера окна

.


.

Custom Sizes

Чтобы установить нестандартный размер FAB, вы можете установить app:fabCustomSize. Обратите внимание, что android:layout_width и android:layout_height должны быть "wrap_content".


5
задан Josh Hunt 6 July 2009 в 07:44
поделиться

4 ответа

Позволяет ли используемая вами zip-библиотека выводить данные в поток. Вы можете выполнять потоковую передачу напрямую пользователю вместо временной записи в zip-файл, ЗАТЕМ потоковую передачу пользователю.

2
ответ дан 18 December 2019 в 05:55
поделиться

Вот простая функция просмотра Django, которая архивирует (в качестве примера) все читаемые файлы в / tmp и возвращает zip-файл.

from django.http import HttpResponse
import zipfile
import os
from cStringIO import StringIO # caveats for Python 3.0 apply

def somezip(request):
    file = StringIO()
    zf = zipfile.ZipFile(file, mode='w', compression=zipfile.ZIP_DEFLATED)
    for fn in os.listdir("/tmp"):
        path = os.path.join("/tmp", fn)
        if os.path.isfile(path):
            try:
                zf.write(path)
            except IOError:
                pass
    zf.close()
    response = HttpResponse(file.getvalue(), mimetype="application/zip")
    response['Content-Disposition'] = 'attachment; filename=yourfiles.zip'
    return response

Конечно, этот подход будет работает только в том случае, если zip-файлы удобно помещаются в память - в противном случае вам придется использовать файл на диске (чего вы пытаетесь избежать). В этом случае вы просто замените file = StringIO () на file = open ('/ path / to / yourfiles.zip', 'wb') и замените file.getvalue () с кодом для чтения содержимого файла на диске.

5
ответ дан 18 December 2019 в 05:55
поделиться

Можно передать итератор конструктору HttpResponse (см. Документацию) . Это позволит вам создать собственный итератор, который генерирует данные по мере их запроса. Однако я не думаю, что это сработает с zip (вам придется отправлять частичный zip по мере его создания).

Я думаю, что правильным способом было бы создать файлы в автономном режиме, в отдельном процессе. Затем пользователь может отслеживать прогресс, а затем загрузить файл, когда он будет готов (возможно, используя метод итератора, описанный выше). Это похоже на то, что используют такие сайты, как YouTube, когда вы загружаете файл и ждете его обработки.

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: