1,該項目主要採用的是springboot+thymeleaf框架javascript
2,代碼展現的爲ajax完成圖片上傳(若是不用ajax只須要改變相應的form表單配置便可)css
1,頁面效果:html
2,文件夾路徑下就會多了對應的圖片:java
1,在html文本中編輯爲(採用thymeleaf框架):ajax
<!-- 圖片文本框 --> <input type="file" class="form-control" id="file" name="file" th:onchange="javascript:preview(this)">
<!-- 這個是在上傳以前回顯圖片圖片展現 --> <div id="preview"> <!--這個是爲了將頁面返回的圖片展現出來的.默認隱藏--> <img style="width: 100px; height: 100px;display:none" id="imgHidden" /> </div> <!-- 提交...這裏pageIndex和pageSize可傳可不傳,主要取決於提交以後是否須要回到當前頁面. --> <button type="submit" th:onclick="javascript:submitForm([[${pageIndex}]],[[${pageSize}]])" class="btn btn-primary">提交</button>
2,編輯js代碼:
兩種狀況:1,有file中有值的時候提交;2,file文件中沒有值的時候提交spring
function submitForm(pageIndex, pageSize) { var formData = new FormData(); //將須要提交的參數封裝起來 formData.append("id", $("#id").val()); var zswb = $("#file").val(); //獲取file中的內容,看是否有值 if (zswb == '' || zswb.length < 1) { //沒有file提交的時候走的接口 $.ajax({ url : '/editMovieWithoutFile', type : 'post', data : formData, processData : false, contentType : false, success : function(value) { var result = JSON.parse(value); if (result == 'true') { window.location.href = "/index?pageIndex=" + pageIndex+ "&pageSize=" + pageSize; } else { Lobibox.alert('error', {msg : "媒資信息更新失敗!!!"}); } } }); } else { //有file提交的時候走的接口 formData.append("file", $("#file")[0].files[0]); $.ajax({ url : '/editMovieInfo', type : 'post', data : formData, processData : false, contentType : false, success : function(value) { var result = JSON.parse(value); if (result == 'true') { window.location.href = "/index?pageIndex=" + pageIndex+ "&pageSize=" + pageSize; } else { Lobibox.alert('error', {msg : "媒資信息更新失敗!!!"}); } } }); } }
//圖片回顯: function preview(file) { $("#imgHidden").css("display", "none"); var prevDiv = document.getElementById('preview'); if (file.files && file.files[0]) { var reader = new FileReader(); reader.onload = function(evt) { prevDiv.innerHTML = '<img style="width: 100px;height: 100px;" src="' + evt.target.result + '" />'; } reader.readAsDataURL(file.files[0]); } else { prevDiv.innerHTML = '<div class="img" style="width: 100px;height:100px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>'; } }
3,application.properties中的配置上傳的限制數據庫
#配置文件傳輸 spring.servlet.multipart.enabled=true spring.servlet.multipart.file-size-threshold=0 #單個數據的大小 spring.servlet.multipart.maxFileSize=100MB #總數據的大小 spring.servlet.multipart.maxRequestSize=100MB
4,controller(這裏就不演示無file的狀況,由於只是接受參數很簡單):springboot
/** * 有file文件時 * @param movieDto 封裝了須要傳遞過來的參數 * @param file 圖片file */ @RequestMapping("/editMovieInfo") @ResponseBody public String editMovieInfo(@RequestParam("id")final int id,@RequestParam("file")MultipartFile file) { int result = btShareService.editMovieInfo(id,file,uploadDir); if (result > -1) { return JSON.toJSONString("true"); } else { return JSON.toJSONString("false"); } }
5,service層處理:app
@Transactional @Override public int editMovieInfo(int id, MultipartFile file,String uploadDir) { try { // 圖片路徑 String imgUrl = null; //上傳 String filename = upload(file, uploadDir, file.getOriginalFilename()); if (!EmptyUtil.isEmpty(filename)) { imgUrl = new File(uploadDir).getName() + "/" + filename; } MovieInfo movie = movieInfoService.selectMovieInfoByDcpId(Integer.valueOf(movieDto.getId())); movie .setImgUrl(imgUrl) movieInfoService.updateMovieInfoByDcpId(movieInfo); return 0; } catch (Exception e) { e.printStackTrace(); return -1; } }
圖片上傳的方法框架
public String upload(MultipartFile file, String path, String fileName) throws Exception { // 生成新的文件名 String realPath = path + "/" + UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf(".")); File dest = new File(realPath); // 判斷文件父目錄是否存在 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdir(); } // 保存文件 file.transferTo(dest); return dest.getName(); }
6,至於Dao層的操做和數據庫修改這裏就直接省略了....