我正在创建一个 CKAN 插件,以允许用户从数据库服务器中选择和下载多个资源(文件)。我使用一些 Python 代码创建了一个 Flask 视图函数,该函数应该使用请求的资源创建一个 zip 文件,但是即使我提供了绝对路径,创建也会失败并显示“没有这样的文件或目录”错误。
代码基于this、this和this post,为了解决当前的问题,我已经在这里和这里检查过,但没有太大成功。
代码如下:
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。(目前正在我机器上的 docker 容器中创建的服务器上进行测试)
请注意,在浏览器中复制粘贴上述路径使我可以毫无问题地访问该文件。但是,该zf.write命令失败并显示“没有此类文件或目录”错误。
知道出了什么问题吗?
HUWWW
相关分类