<!-- 注意,这个文件的上传和下载功能一定要放在一个form里方便处理--> <form class="form-horizontal m" id="form-checkCarPhoto-show" th:object="${CarPhoto}"> <input id="id" name="id" th:field="*{id}" type="hidden"> <!-- 单文件上传按钮--> <input id="filePath" name="filePath" class="form-control" type="file"> <a class="btn btn-success btn-xs " href="#" onclick="uploadFile()"><i class="fa fa-edit"></i>单文件上传</a> <!-- 多文件打包下载按钮--> <a class="btn btn-success btn-xs " href="#" onclick="downloadFile($('#id').val())"><i class="fa fa-edit"></i>全部下载</a> </form>
function uploadFile() { var formData = new FormData(); //定义上传文件 if ($('#filePath')[0].files[0] == null) { //判断文件是否为空 $.modal.alertWarning("请先选择文件路径"); return false; } formData.append('fileName', $("#fileName").val()); //放入文件名 formData.append('file', $('#filePath')[0].files[0]); //放入文件地址 $.ajax({ url: prefix + "/add/"+$('#id').val() , //controller文件映射,依据自己定义的写 type: 'post', cache: false, data: formData, processData: false, //Jquery是否会序列化数据 //contentType:发送信息至服务器时内容编码类型(告诉服务器从浏览器提交过来的数据格式) // 默认值为contentType = "application/x-www-form-urlencoded" // 在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。 contentType: false, dataType: "json", success: function(result) { $.operate.successCallback(result); } }); }
@PostMapping("/add/{cid}") @ResponseBody public AjaxResult addSave(@PathVariable("cid") Integer cid, @RequestParam("file") MultipartFile file, FileInfo fileInfo) throws IOException { // 上传文件路径 String filePath = Global.getProfile() + "check/"; // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); CarPhoto carPhoto = new CarPhoto(); carPhoto.setPhotoUrl(fileName); carPhoto.setCheckId(cid); // 插入数据并返回结果至前端 return toAjax(carPhotoService.insertCarPhoto(carPhoto)); }