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