- 论坛徽章:
- 0
|
新手学习
上传功能已经完成,如何解压呢?
code
模版upload.html- <form action="." enctype="multipart/form-data" name="form1" method="post" id="form1">
- <fieldset class="module aligned ">
-
- <div class="form-row">
- <div class="form-row">
- {{ form.file.errors }}
- <label for="id_afile" class="required">上传zip文件:</label> {{form.file}}
- </div>
- </div>
-
- </fieldset>
- <br>
- <div class="submit-row" >
- <input type="submit" value="保存" class="default" name="_save" onclick="save();"/>
- </div>
- <form>
复制代码 视图views.py- # -*- coding: utf-8 -*-
- from django import forms
- from django.shortcuts import render_to_response
- from code import handle_uploaded_file
- from django.http import HttpResponse
-
- class UploadFileForm(forms.Form):
- file = forms.FileField(widget=forms.FileInput, required=False)
-
- def upload(request):
- if request.method == 'POST':
- form = UploadFileForm(request.POST, request.FILES)
- if form.is_valid():
- handle_uploaded_file(request.FILES['file'])
- html = u"<html><body>Upload Success</body></html>"
- return HttpResponse(html)
- else:
- form = UploadFileForm()
- return render_to_response('upload.html',{'form':form})
复制代码 code.py- from mysite.settings import MEDIA_ROOT
- import zipfile
- from django.http import HttpResponse
- def handle_uploaded_file(f):
- name = "%s" % f.name
- destination = open('%s/%s' % (MEDIA_ROOT, name), 'wb+')
- for chunk in f.chunks():
- destination.write(chunk)
- destination.close()
- unziplog(f)
-
- def unziplog(f):
- finallog = ''
- name = "%s" % f.name
- if not zipfile.is_zipfile(name):
- errors = u"<html><body><I>can not unzip the uplog,please make sure the upfile is .zip</I></body></html>"
- return HttpResponse(errors)
- #return False
- try:
- f = zipfile.ZipFile('%s/%s' % (MEDIA_ROOT, name), 'r')
- finallog = f.namelist()[0]
- f.extract(finallog)
- except Exception:
- errors = u"<html><body><I>unzip log file failed</I></body></html>"
- return HttpResponse(errors)
- #return False
- return True
复制代码 可以把文件上传到目录中,如何才能进行解压? |
|