AngularJS下 $http 上传文件
作为记录,也希望对别人有帮助
// 以下是html代码
<div style="border: 1px solid red;"> <h2>上传pdf文件</h2><input type="file" name="file" id="file" accept=".pdf" onchange="angular.element(this).scope().uploadDoc(this.files)">
</div>// 以下是js代码// pdf 文件上传 已后台调通过试$scope.uploadDoc=function() { var formData = new FormData();var file = document.getElementById('file').files[0];if(file.name){var fileName = file.name.substring(file.name.lastIndexOf(".") + 1);if(fileName =="pdf"){formData.append('file', file);$http({method:"post",url:$rootScope.url.newapp +"enote/v2/upload-wx-pdf/",data:formData,headers : {'Content-Type' : undefined},transformRequest : angular.identity}).then(function (response) {if(response.status == 200){alert("文件上传成功!!!");}else{alert("文件上传失败!!!");}});}else{alert("文件格式不正确,请上传以.xlsx,.xls 为后缀名的文件。");$("#file_asset").val("");}}};//以下是springboot 后台代码
public EnoteAgentTaskBean upLoadWxPdf(HttpServletResponse resp,@RequestParam(value="file",required=false)MultipartFile file) {EnoteAgentTaskBean resultVo = new EnoteAgentTaskBean();// 先设定一个放置上传文件的文件夹(该文件夹可以不存在,下面会判断创建)String deposeFilesDir = "D:\\file\\";
// // 判断文件手否有内容if (file.isEmpty()) {System.out.println("该文件无任何内容!!!");return resultVo;}// 获取附件原名(有的浏览器如chrome获取到的是最基本的含 后缀的文件名,如myImage.png)// 获取附件原名(有的浏览器如ie获取到的是含整个路径的含后缀的文件名,如 // C:\\Users\\images\\myImage.png)String fileName = file.getOriginalFilename();// 如果是获取的含有路径的文件名,那么截取掉多余的,只剩下文件名和后缀名int index = fileName.lastIndexOf("\\");if (index > 0) {fileName = fileName.substring(index + 1);}// 判断单个文件大于1M
// long fileSize = file.getSize();
// if (fileSize > 1024 * 1024) {
// System.out.println("文件大小为(单位字节):" + fileSize);
// System.out.println("该文件大于1M");
// }// 当文件有后缀名时
// if (fileName.indexOf(".") >= 0) {
// // split()中放正则表达式; 转义字符"\\."代表 "."
// String[] fileNameSplitArray = fileName.split("\\.");
// // 加上random戳,防止附件重名覆盖原文件
// //fileName = fileNameSplitArray[0] + (int) (Math.random() * 100000) + "." + // fileNameSplitArray[1];
//
// }// 当文件无后缀名时(如C盘下的hosts文件就没有后缀名)
// if (fileName.indexOf(".") < 0) {
// // 加上random戳,防止附件重名覆盖原文件
// fileName = fileName + (int) (Math.random() * 100000);
// }// 根据文件的全路径名字(含路径、后缀),new一个File对象destFile fileUpload = new File(deposeFilesDir + fileName);// 如果该文件的上级文件夹不存在,则创建该文件的上级文件夹及其祖辈级文件夹;if (!fileUpload.getParentFile().exists()) {fileUpload.getParentFile().mkdirs();}try {file.transferTo(fileUpload); //将上传代码文件到上传到自己定义好的路径} catch (IOException e) {log.error("上传日志文件到服务器失败:" + e.toString());}return resultVo;
}
参考文章: 1. https://blog.csdn.net/longyin0528/article/details/81567529?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
2. https://blog.csdn.net/jannie_kung/article/details/52057288