因爲要寫一個前端上傳文件按鈕功能,本人前端是小白,因此在網上搜索了許多,發現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