Как распаковать ZIP-файл в Django, который содержит .shp, .prj, .shx и .dbf, таким образом, возможность загрузки в базу данных? - PullRequest
0 голосов
/ 06 июня 2011

Я загрузил zip-файл, используя django, в локальный каталог.Как мне распаковать его и сохранить в 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 содержит загруженный почтовый файл.Но это не дает никакого выхода.

1 Ответ

0 голосов
/ 07 июня 2011

Не похоже, что вы на самом деле открываете загрузку, а файл в текущем каталоге называется file_obj.Вы хотите что-то более похожее на

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

также я могу ошибаться, но я не думаю, что вам вообще нужен вызов form.handle (), по крайней мере, я никогда не использовал его, но я могисправьте.

Кроме того, здесь вы должны быть очень осторожны, поскольку вы записываете имена файлов, содержащиеся в zip-файле, которые, как вы знаете, могут быть где-то абсолютными путями.Вы должны быть очень осторожны с этим.Если я этого не сказал, будьте осторожны с пользовательским контентом, он может быть вредоносным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...