如何解压缩django中的zip文件,其中包含.shp,.prj,.shx和.dbf,从而能够在数据库中上传?

时间:2011-06-06 17:51:36

标签: python django

我在本地目录中使用django上传了一个zip文件。如何解压缩并将其存储在3个不同的文件中?

好的。让我更详细地解释一下我的问题。

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 :(得分:0)

看起来你实际上并没有打开上传,而是当前目录中名为'file_obj'的文件。你想要更像

的东西
z = zipfile.ZipFile(request.FILES['file_obj'])

我也可能错了,但我认为你根本不需要使用form.handle(),至少我从未使用它,但我可能会更正。

另外,你要在这里非常小心,因为你正在写出zipfile中包含的文件名,你知道这些文件名可能是某个地方的绝对路径。你需要非常小心。如果我没有说出来,请注意用户创建的内容,它可能是恶意的。