分享

Django中实现文件上传功能

 饮茶仙人 2018-04-16

在web开发中,文件上传与下载是常见的功能,在Django中实现文件的上传与下载也非常简单,实现步骤与其他功能实现类似,1. 新建一个模板,2. 编写模板对应的view函数,3. 配置view与模板关联的url。具体实现如下:

1. 新建一个模板

     新建一个用于上传文件的模板(本文的模板是基于bootstrap的),内容如下:

     

  1. <div class="row">  
  2.       <div class="col-md-8 col-md-offset-2">  
  3.           <form class="form-inline" role="form"  method="post" enctype="multipart/form-data" accept-charset="utf-8">  
  4.               <div class="form-group">  
  5.                   <input type="file" name="file">  
  6.               </div>  
  7.               <div class="form-group">  
  8.                   <input type="submit" value="上传文件">  
  9.               </div>  
  10.           </form>  
  11.       </div>  
  12.   </div>  
   注意:这个Form表单中必须有属性enctype="multipart/form-data",这样当request方法是POST时,处理这个form的view中才能接受到request.FILES中的文件数据,可以通过request.FILES['file']来存取。如果不设置这个属性,request.FILES则为空。

2. 编写模板对应的view函数

   

  1. def upload(request):  
  2.     if request.method=="POST":  
  3.         handle_upload_file(request.FILES['file'],str(request.FILES['file']))          
  4.         return HttpResponse('Successful') #此处简单返回一个成功的消息,在实际应用中可以返回到指定的页面中  
  5.   
  6.     return render_to_response('course/upload.html')  
  7.   
  8. def handle_upload_file(file,filename):  
  9.     path='media/uploads/'     #上传文件的保存路径,可以自己指定任意的路径  
  10.     if not os.path.exists(path):  
  11.         os.makedirs(path)  
  12.     with open(path+filename,'wb+')as destination:  
  13.         for chunk in file.chunks():  
  14.             destination.write(chunk)  

3. 配置相应的URL;

   在urls.py文件中配置相应的url,

 url(r'^upload/$',views.upload,name='upload'),

   经过上述三个步骤后,我们就写好文件上传的功能,下面测试一下吧:

   启动开发服务器后,访问相应的upload页面,页面如下:

  

   点击【选择文件】按钮,打开想要上传的文件,然后点击【上传文件】按钮,就可以将文件上传到指定的文件夹中了。


相关的参考文章:

http://www.cnblogs.com/linjiqin/p/3731751.html

http://my.oschina.net/yushulx/blog/469802








    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多