将文件解压缩并将其内容保存到数据库中

问题描述 投票:2回答:1

我正在使用Django构建网站,用户可以在其中上传.zip文件。我不知道文件有多少个子文件夹或文件包含的文件类型。

我想要:

1)解压缩文件

2)获取解压缩目录中的所有文件(其中可能包含嵌套的子文件夹)

3)将这些文件(内容,而不是路径)保存到数据库中。

我设法解压缩文件并输出文件路径。

但是这不是我想要的。因为我不在乎文件路径,而是在文件本身。另外,由于我将解压缩的文件保存到我的media/documents中,因此,如果不同的用户上传不同的zip,并且所有的zip文件都解压缩了,则文件夹media/documents将很大,并且无法知道谁上传了什么。] >

解压缩.zip文件

    myFile = request.FILES.get('my_uploads')
    with ZipFile(myFile, 'r') as zipObj:
       zipObj.extractall('media/documents/')

在子文件夹中获取文件的路径

    x = [i[2] for i in os.walk('media/documents/')]
    file_names = []
    for t in x:
        for f in t:
            file_names.append(f)

views.py

#这不是完美的,只是一个想法。我只是在调试。
def homeupload(request):
    if request.method == "POST":
        my_entity = Uploading()
        # my_entity.my_uploads = request.FILES["my_uploads"]
        myFile = request.FILES.get('my_uploads')
        with ZipFile(myFile, 'r') as zipObj:
           zipObj.extractall('media/documents/')

        x = [i[2] for i in os.walk('media/documents/')]
        file_names = []
        for t in x:
            for f in t:
                file_names.append(f)
        my_entity.save()

我正在使用Django构建网站,用户可以在其中上传.zip文件。我不知道该文件有多少个子文件夹或它包含哪种文件类型。我想要:1)解压缩文件2)Get ...

python django
1个回答
1
投票

使用ZipFile时,您实际上不必弄乱文件系统,因为它包含允许您将zip文件中存储的文件直接读取到内存中的方法,然后可以将这些对象保存到数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.