如何实现html上传文件并被Django后台处理
2019-01-05 10:27
645 查看
如何实现html上传文件并被Django后台处理
1.html前端代码编写:
先看代码,代码如下:
<form action="/order_upload/" method="post" enctype="multipart/form-data"> <ul class="forminfo"> <div class=""> <li><label>选择文件</label> <input type="file" id="info_file" name="info_file" class="dfinput" style="display:none;" onchange="change();" /> <input type="text" id="info_file_tmp" name="info_file_tmp" class="dfinput" readonly="readonly" onclick="info_file.click();"> <button name="" type="button" class="btn" onclick="info_file.click();" >浏览</button> <i>文件必须是Excel文件</i> <li><input type="submit" class="btn" value="确认保存" style="float:left; margin-right:15px;"/></li> </li> </div> </ul> {% csrf_token %} </form>
注意,这里的核心代码是Form标签和input type=file 标签,Form标签一定要添加enctype="multipart/form-data"这一属性!!!!因为这里涉及到enctype的作用,如下图:
所以,正如图中所说,在使用包含文件上传控件的表单时,必须使用multipart/form-data,而不是默认的application/x-www-form-urlencoded!!!
(因为这点,花了我一晚上的时间,搞不出来,就是因为这点!!基础知识很重要!)
2.Django端后台代码编写:
同样,先看代码:(注意,是要写在View.py文件里)
def orderupload(request): #实现订单上传 if request.method == "POST": obj = request.FILES.get('info_file') baseDir = os.path.dirname(os.path.abspath(__name__)) orderDir = os.path.join(baseDir, 'userfile', 'orderfile') filename = os.path.join(orderDir, obj.name) fobj = open(filename, 'wb') for chrunk in obj.chunks(): fobj.write(chrunk) fobj.close() return render(request, 'form.html')
这里的代码,思路是当提交method为“POST”的时(这个是由前端html中Form属性决定),通过request.FILES.get方法来获取文件对象,这里的’info_file’就是前端input type=‘file’ 标签里的name属性所对应的值。然后,baseDir,orderDIr,filename是为了在后端的userfile文件夹下的orderfile文件夹里,将网页前端得到的数据,写到该文件里,通过open(filename,wb)来创建一个文件输出流,通过for循环语句,写入文件。
以上就是通过html上传文件并被Django后台处理的方法,因为一个enctype属性值没写,搞了我一晚上,到处查资料,结果原因竟然是它,也是醉了。说明基础知识还是要掌握扎实才行!!
相关文章推荐
- webuploader+springmvc实现多文件上传(html+js+css原创,后台代码借鉴)
- django如何实现文件的上传,修改,删除,展示(03)
- webuploader+springmvc实现多文件上传(html+js+css原创,后台代码借鉴)
- resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现
- django如何实现文件的上传,修改,删除,展示(02)
- django如何实现文件的上传,修改,删除,展示(01)
- ajax实现文件上传以及后台servlet中的处理总结
- django如何实现文件的上传,修改,删除,展示(04)
- html借助一般处理程序实现文件上传到服务器
- layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
- springMvc+swfUpload实现异步文件上传(前台用纯html后台返回json)
- 如何在django里上传csv文件并进行入库处理的方法
- java 实现html5多文件选择上传_h5多文件上传_ajax异步多文件上传_java处理多文件上传
- HTML加一般处理程序实现文件上传
- 如何实现文件的上传
- jQuery的LigerUI如何实现文件上传
- Java中如何使用组件实现文件上传下载
- android上如何实现后台日志记录并写文件到sd卡
- awk 如何处理两个文件,实现类似数据库表连接的操作
- 如何用seam实现文件上传