Я создаю плагин CKAN, который позволяет пользователям выбирать и загружать несколько ресурсов (файлов) с сервера базы данных.Я создал функцию просмотра фляги с некоторым кодом Python, который должен создать zip-файл с запрошенными ресурсами, но создание завершается неудачно с ошибкой «нет такого файла или каталога», даже если я даю абсолютный путь.
Кодоснован на этом , этом и этом сообщении, и для решения текущего вопроса я уже проверил здесь и здесь без особого успеха.
Код выглядит следующим образом:
import zipfile
import io
def download_multiple_resources():
if request.method == "POST":
memory_file = io.BytesIO()
with zipfile.ZipFile(memory_file, "w", zipfile.ZIP_STORED) as zf:
for res in request.form.values():
zf.write(str(res), 'download.zip')
return send_file(memory_file, mimetype='application/zip', as_attachment=True, attachment_filename='download.zip')
Ресурсы выбираются пользователем через форму, которая отправляет запрос.Форма отправляет полный путь запрошенного файла, поэтому, если пользователь выбрал для загрузки testfile.txt
, в приведенном выше коде значение res
будет примерно таким, как http://localhost:5000/dataset/6192bb3b-6c4a/resource/dbe39d59-b938/download/testfile.txt
.(в настоящее время тестирование выполняется на сервере, созданном в док-контейнере на моем компьютере)
Обратите внимание, что при вставке в мой браузер указанного выше пути можно без проблем получить доступ к файлу.Однако команда zf.write
завершается неудачно с ошибкой «нет такого файла или каталога».
Есть идеи, что происходит не так?