1. 程式人生 > >SpringMvc上傳檔案(阿里雲)

SpringMvc上傳檔案(阿里雲)

● springMvc 上傳檔案
springMvc.xml配置

<!-- SpringMVC上傳檔案時,需配置MultipartResolver處理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8" />
    <property name="maxUploadSize" value
="858993000000" />
</bean>

java程式碼

//上傳圖片至阿里雲
    @RequestMapping(value = "/upImg", method = RequestMethod.POST)
    @ResponseBody
    public void uploadImg(HttpServletRequest request, HttpServletResponse response) {
        // 建立一個通用的多部分解析器
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        // 判斷 request 是否有檔案上傳,即多部分請求
if (multipartResolver.isMultipart(request)) { // 轉換成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; AppixResult result = uImg(multiRequest,ConstantsInfo.GKWW_PIC); ResponseUtils.renderJson(response, JsonUtils.objectToJson(result)); } else
{ ResponseUtils.renderJson(response, JsonUtils.objectToJson(AppixResult.build(400, "請選擇要上傳的檔案"))); } } public AppixResult uImg(MultipartHttpServletRequest multiRequest,String url) { // 取得request中的所有檔名 Iterator<String> iter = multiRequest.getFileNames(); // 此處只上傳單個檔案,如果需要多個檔案只需要改為while迴圈上傳 if (iter.hasNext()) { // 取得上傳檔案 MultipartFile file = multiRequest.getFile(iter.next()); // ConstantsInfo.APPIX_IMG_IC + file.getOriginalFilename() // 取得當前上傳檔案的檔名稱 String myFileName = file.getOriginalFilename(); // 判斷上傳檔案是否符合格式 if (Validator.checkFileName(myFileName)) { // 如果名稱不為“”,說明該檔案存在,否則說明該檔案不存在 if (StringUtils.isNotEmpty(myFileName.trim())) { String[] strArray = myFileName.split("\\."); String suffixName = strArray[1];// 檔案字尾 String imgPath = url+ IDUtils.genImageName() + "." + suffixName; AppixResult result = uploadProvider.uploadFileToOSS(file, imgPath); if (result.getStatus() == 200) { return AppixResult.build(200,ConstantsInfo.GKWW_IMG_URL + imgPath); } else { return AppixResult.build(400, "圖片上傳失敗"); } } else { return AppixResult.build(400, "圖片上傳失敗"); } } else { return AppixResult.build(400, "圖片上傳失敗"); } } else { return AppixResult.build(400, "圖片上傳失敗"); } }

js程式碼


//上傳使用者圖片
approveFile($('#u_pic'),$('#uPic_btn'),$('#uPic'));

//上傳檔案同步名稱tar:真實的上傳檔案按鈕,btn:觸發按鈕
function approveFile(tar,btn,src){

  btn.off('click');
  btn.on('click',function(){
      tar.click(); 
  })

  tar.off('change');
  tar.on('change',function(){
    //    上傳認證檔案
    uploadFileOss(tar,function(data){
      //上傳成功後做的操作
        if(data.status == 200){
            src.attr('src',data.msg);//最後顯示所上傳的圖片
        }else{
            alert(data.msg);
        }

    },1);
  })
}
//上傳檔案
function uploadFileOss(input,callback) {  
  if(!$(input)[0]){
    return false;
  }

  var formData = new FormData();
  formData.append('file', $(input)[0].files[0]);

  $.ajax({
        url:'/admin/upImg',
        type: 'POST',
        cache: false,
        data: formData,
        processData: false,
        contentType: false
    }).done(function(res) {
      callback?callback(res):'';
    }).fail(function(res) {})
}