概述
在页面中上传时,之前一般都是需要使用form表单进行上传。html5 中提供了FileReader 可以将文件转换成Base64编码字符串,因此就可以直接使用
AJAX实现文件上传。
实现代码
1.前端JS代码
var url= /*[[@{/sys/upload}]]*/ ; function uploadFile(){ var file = document.getElementById("file").files[0]; var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e){ // ajax 上传图片 $.post(url, { data: e.target.result},function(ret){ console.info(ret); },'json'); } }
2.后端代码
@RequestMapping("/sys/upload")
public JSONObject upload(HttpServletRequest request) {
JSONObject json=new JSONObject();
String data=request.getParameter("data");
int idx=data.indexOf(",");
String fileBase64=data.substring(idx+1);
byte[] fileBytes= Base64.decodeBase64(fileBase64);
writeByte("d:\file.jar", fileBytes);
json.put("success", true);
return json;
}
在后端代码接收的是base64 编码,转换成bytes后写入文件。