java實現圖片的上傳和展現

1、注意事項:  

1,該項目主要採用的是springboot+thymeleaf框架javascript

2,代碼展現的爲ajax完成圖片上傳(若是不用ajax只須要改變相應的form表單配置便可)css

2、效果實現:

1,頁面效果:html

2,文件夾路徑下就會多了對應的圖片:java

3、代碼實現:

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層的操做和數據庫修改這裏就直接省略了....

相關文章
相關標籤/搜索