在Django中解压缩文件提交而不存储

时间:2018-04-03 16:07:52

标签: python django django-file-upload

我目前正在构建一个将在未来很快被其他开发人员使用和维护的应用程序。我想要的是能够上传zip文件,解压缩和处理内容,并丢弃文件,而无需将其实际存储在Django文件存储系统中。这些是我现在所拥有的相关部分:

views.py:

def upload(request):
    if request.method == 'POST' and request.FILES['myfile']:
        myfile = request.FILES['myfile']
        if str(myfile.name).endswith('.zip'):

            ## THIS STORES THE FILE -- NOT WHAT I WANT
            #fs = FileSystemStorage()
            #filename = fs.save(myfile.name, myfile)

            uploaded_file_url = str(myfile.name)
            return render(request, 'webapp/upload.html', {
                'uploaded_file_url': uploaded_file_url
            })
        file_error = "There was an error processing the file"
        return render(request, 'webapp/upload.html', {
            'file_error': file_error
        })
    return render(request, 'webapp/upload.html')

upload.html

{% extends "./base.html" %}

{% block content %}
<body>
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="myfile">
    <button type="submit">Upload</button>
  </form>

  {% if uploaded_file_url %}
    <p>File uploaded at: <a href="{{ uploaded_file_url }}">{{ uploaded_file_url }}</a></p>
  {% endif %}

  {% if file_error %}
    <p>There was an error in the file submission.</p>
  {% endif %}
</body>
{% endblock %}

我知道检查文件是否以.zip结尾并不一定表明它是否真的是一个zip文件,但它现在足以满足我的目的。 myfile是一个UploadedFile,我正试图找到解压缩和处理内容的方法,但我不知道如何解决这个问题。我可以将它存储在FileSystem中,然后从那里处理它,但我想尽可能避免存储它。任何关于如何做到这一点的建议将不胜感激。

0 个答案:

没有答案