如何在Django中解压包含.shp、.prj、.shx和.dbf的zip文件以便上传到数据库?
我在本地目录里用Django上传了一个压缩文件(zip文件)。我该怎么解压它,并把内容存储到三个不同的文件里呢?
好的,让我更详细地解释一下我的问题。
def upload(request):
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
form.handle(request.FILES['file_obj'])
#form.save() # if a modelform
#form.cleaned_data['user'] = request.user
z = zipfile.ZipFile('file_obj')
for files in z.namelist():
file(files,'wb').write(z.read(files))
z.close()
return render_to_response('uploaded.html', RequestContext(request,{}))
else:
form = UploadForm()
return render_to_response('upload.html', RequestContext(request,{'form': form})
)
这是我的上传表单,应该可以正常工作。file_obj里包含了上传的zip文件。但是它没有任何输出。
1 个回答
0
看起来你并没有真正打开上传的文件,而是打开了当前目录下一个叫做 'file_obj' 的文件。你应该做的是类似下面这样的:
z = zipfile.ZipFile(request.FILES['file_obj'])
另外,我可能错了,但我觉得你根本不需要调用 form.handle(),至少我从来没有用过这个,但也许我会被纠正。
还有,你在这里要非常小心,因为你正在写入 zip 文件中包含的文件名,而这些文件名可能是某个地方的绝对路径。对此你需要特别小心。如果我没说过的话,处理用户创建的内容时要小心,它可能是恶意的。