因为要写一个前端上传文件按钮功能,本人前端是小白,因此在网上搜索了许多,发现FileReader很是好用。前端
很少BB,直接来。ajax
1,前端只须要一个input标签,json
<input type="file" id="file" >
2,JS,很简单后端
$("#file").bind("change",function () { var fileinfo = document.getElementById("file").files[0]; var reader = new FileReader(); reader.readAsDataURL(fileinfo); reader.onload = function(){ //console.log(reader.result); }; })
3,选择了readerAsDataURL 方法 读取数据,由于试过其余方式,发现其余方式获取数据后在传到后端时,容易引发浏览器崩溃。浏览器
4,因为readerAsDataURL方法,获取的返回值,并非彻底的数据,而是加了一些前缀。post
data = reader.result.split(",")[1] # 这样才是完整的数据
5,使用ajax发送数据:url
jQuery.ajax({ dataType:"json", data:JSON.stringify({"fileinfo":data,"name":filename,"path":path,}), url:"/task/getfile/", type:"post", cache:false, processData:false, contentType:false, success:function (data) { if(data.status==0){ document.getElementById("text_info").innerText = "文件成功上传!" }else{ document.getElementById("text_info").innerText = "文件上传失败!" } }, });
6,后端接受数据就OK。因为readAsDataURL将文件转为了base64格式,因此后端只须要转回去就OK了.spa
7,打开文件(文件名后缀要一致!一致!一致!) ,f.write 都会,就不写了。code
8,而后就成功了。blog