Django API:上传nbe文件和scan处理器

上传文件

1. 在template的html文件里增加:

View Code
<form enctype="multipart/form-data" method="post" action="http://10.1.10.36/upload/">
   <input type="file" name="file" /><br/>
<input type="submit" value="上传文件" />
</form>

2. 在from里增加

View Code
class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

处 理这个form的视图收到了在request.FILES中的文件数据。从上述form来的数据可能通过request.FILES['file']来存 取。特别注意的是,只有当request方法是POST,且发送request的<form>有属性 enctype="multipart/form-data"时,request.FILES中包含文件数据,否则request.FILES为空。

3. 在views里

View Code
def handle_uploaded_file(request,f):
    name="%s"%f.name
    destination = open('url/%s'%name, 'wb+')
    for chunk in f.chunks():
        destination.write(chunk)
    destination.close()
    get_nbe(request,'url/%s'%name)
#
def upload_file(request):
    if request.method == 'POST':
        logging.debug("**** in post ****")
        form = UploadFileForm(request.POST, request.FILES)
        #if form.is_valid():
        logging.debug("**** hahhahahahah ****")
        handle_uploaded_file(request,request.FILES['file'])
        #get_nbe(request,request.FILES['file'])
        
        return HttpResponse('%s'%request.FILES['file'].name)
        return HttpResponse("not valid")
    else:
        orm = UploadFileForm()
    return HttpResponse("haha")

在urls里给主方法创建一个url。将此url加入第一步html的form action里面。

这样html提交时,唤起action里的url,调用views里的函数,获取传递的request,经过form验证,执行方法。

*upload file的参数

View Code
1、UploadFile.read():
  从文件中读取全部上传数据。当上传文件过大时,可能会耗尽内存,慎用。
2、UploadFile.multiple_chunks():
  如上传文件足够大,要分成多个部分读入时,返回True.默认情况,当上传文件大于2.5M时,返回True。但这一个值可以配置。
3、UploadFile.chunks():
  返回一个上传文件的分块生成器。如multiple_chunks()返回True,必须在循环中使用chrunks()来代替read()。一般情况下直接使用chunks()就行。
4、UploadFile.name():上传文件的文件名
5、UplaodFile.size():上传文件的文件大小(字节)

Looping over UploadedFile.chunks() instead of using read() ensures that large files don't overwhelm your system's memory.

https://docs.djangoproject.com/en/1.4/topics/http/file-uploads/

http://www.cnblogs.com/yijun-boxing/archive/2011/04/18/2020155.html

 

 

Scan处理器

原理:一个过滤器,得到用户post form的数据,输出json文件。

1. 建一个html的文件测验,hardcoded一些选项,action=url【为目标methond的url】,method="post"。

  最终提交按键为submit

2. 填完选项提交后,试验页面将转到action里设定的url,我们的handler在那等着它,处理得到的request。

3. 用create_scanTask验证scan是否合格并schdule。

4. 从数据库读取数据。

 

 

 

 

你可能感兴趣的:(django)