亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMvc3+extjs4實現上傳與下載功能的代碼解析

發布時間:2020-07-20 15:37:08 來源:億速云 閱讀:108 作者:小豬 欄目:編程語言

這篇文章主要講解了SpringMvc3+extjs4實現上傳與下載功能的代碼解析,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

本文實例為大家分享了SpringMvc3+extjs4實現上傳與下載的具體代碼,供大家參考,具體內容如下

最近生活過的很充實,人一直在不停的忙碌著學習新東西。這是我最近遇到的問題,我找度娘n了很久,終于找到了解決方案!

前臺代碼:

<script> 
 Ext.onReady(function() {

  Ext.create('Ext.form.Panel', {
   title : '文件上傳',
   width : 400,
   bodyPadding : 10,
   frame : true,
   renderTo : document.body,
   items : [ {
    xtype : 'filefield',
    name : '文件',
    fieldLabel : 'File',
    labelWidth : 50,
    msgTarget : 'side',
    allowBlank : false,
    anchor : '100%',
    buttonText : '請選擇文件...'
   } ],

   buttons : [ {
    text : '上傳',
    handler : function() {
     var form = this.up('form').getForm();
     if (form.isValid()) {
      form.submit({
       url : '根路徑/fileUploadDown/fileUpload',
       waitMsg : '正在上傳文件中...',
       success : function(fp, o) {
        Ext.Msg.alert('上傳文件成功!');
       }
      });
     }
    }
   } ]
  });

 });
</script>

后臺代碼:

/**
*記錄返回結果*/
 class ExtJSFormResult {

 private boolean success;

 public boolean isSuccess() {
  return success;
 }

 public void setSuccess(boolean success) {

 }

 public String toString() {
  return "{success:" + this.success + "}";
 }
}
 

class FileUploadBean {

  private CommonsMultipartFile file;

  public CommonsMultipartFile getFile() {
   return file;
  }

  public void setFile(CommonsMultipartFile file) {
   this.file = file;
  }
}

/**
 * 文件的上傳與下載
 * @author Administrator
 *
 */
@Controller
@RequestMapping(value = "/fileUploadDown")
public class FileUploadAndDownController {
 
 private static int countter=1; //定義一個計數器,用于上傳文件的重命名
 
 @Autowired
 private ProAnnexDao<ProAnnex> proAnnextDao;
 
 

 public void setProAnnextDao(ProAnnexDao<ProAnnex> proAnnextDao) {
  this.proAnnextDao = proAnnextDao;
 }

 @RequestMapping(value="fileUpload",method = RequestMethod.POST)
 public @ResponseBody String create(RedirectAttributes redirectAttributes,FileUploadBean uploadItem, 
   BindingResult result,HttpSession session){
  //獲取根路徑
  String uploadFolderPath = session.getServletContext().getRealPath("/"); 
  ExtJSFormResult extjsFormResult = new ExtJSFormResult();
  try {
   
   if (result.hasErrors()) {
    for (ObjectError error : result.getAllErrors()) {
     System.err.println("Error: " + error.getCode() + " - "
       + error.getDefaultMessage());
    }

    // 設置ExtJS返回 - error
    extjsFormResult.setSuccess(false);

    return extjsFormResult.toString();
   }

   MultipartFile file = uploadItem.getFile();
   String fileName = null;
   InputStream inputStream = null;
   OutputStream outputStream = null;
   if(file.getSize()>0){
     System.out.println("File Size:::" + file.getSize());
    if(file.getSize()>5242880){
      System.out.println("File Size:::" + file.getSize());
      extjsFormResult.setSuccess(false);
     return "error";
    }
    
    inputStream = file.getInputStream();
  
    File newFile = new File(uploadFolderPath + "fileUpload/");
    //如果文件路徑不存在就新建一個
    if(!newFile.exists()){
     newFile.mkdirs();
    }
    //獲取文件名
    String name=file.getOriginalFilename();
    //從數據庫中查詢存在此類文件名否
    Long count=proAnnextDao.isRepeatName(name);
    //如果存在一樣的文件名,就進行從命名
    if (count>0) {
     name=name.substring(0, name.lastIndexOf("."))+"("+(countter++)+")"+name.substring(name.lastIndexOf("."));
    }
    
    fileName = uploadFolderPath + "fileUpload/" + name;
    outputStream = new FileOutputStream(fileName); 
    int readBytes = 0;
    byte[] buffer = new byte[10000];
    while ((readBytes = inputStream.read(buffer, 0, 10000)) != -1) {
      outputStream.write(buffer, 0, readBytes);
    }
    
    outputStream.close();
    inputStream.close();
    
    
   }

   // 設置ExtJS返回 - sucsess
   extjsFormResult.setSuccess(true);
  } catch (Exception e) {
   
   e.printStackTrace();
   // 設置ExtJS返回 - error
  
   extjsFormResult.setSuccess(false);
  }
  

  return extjsFormResult.toString();
 }
 

}

springMvc.xml(此文件名可能跟項目的實際情況有區別)中的配置:

<!-- 上傳文件,限制大小的配置 -->
  <bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <!--resolveLazily屬性啟用是為了推遲文件解析,以便在Upload中捕獲文件大小異常-->
  <property name="resolveLazily" value="true"/>
  <property name="maxUploadSize" value="5242880" />
 </bean>
 
 
 <!-- 將無法mapping到Controller的path交給default servlet handler處理  --> 
 <mvc:default-servlet-handler/><!-- 使用默認的servlet來響應靜態文件 -->
 <!-- 文件的上傳與下載 -->
 <mvc:view-controller path="/" view-name="redirect:/fileUploadDown"/>

以上的就是上傳文件了。 

下載呢?

下載比較簡單,代碼如下:

@RequestMapping("/downloadFile") 
 public void download(@Valid @ModelAttribute("downLoadName") String downLoadName,
   HttpServletResponse response,HttpSession session,BindingResult result,HttpServletRequest request) throws IOException { 
  
  response.setCharacterEncoding("UTF-8");
  request.setCharacterEncoding("UTF-8");
  //獲取文件的路徑
  String url=session.getServletContext().getRealPath("/")+"/fileUpload/"+downLoadName;
  System.out.println(url);
  File file=new File(url);
  
  InputStream input = FileUtils.openInputStream(file); 
  byte[] data = IOUtils.toByteArray(input); 
 
  //System.out.println("文件名:"+downLoadName);
  response.reset(); 
  //設置響應的報頭信息(中文問題解決辦法)
  response.setHeader("content-disposition","attachment;fileName="+URLEncoder.encode(downLoadName, "UTF-8"));
  response.addHeader("Content-Length", "" + data.length); 
  response.setContentType("application/octet-stream; charset=UTF-8"); 
  
  IOUtils.write(data, response.getOutputStream()); 
  IOUtils.closeQuietly(input); 
  
 }

在界面上只要有一個連接地址:如:window.location.href="根路徑/fileUploadDown/downfile/downLoadName="+name;這樣就可以下載了....   超連接的寫法基本一樣,這里就不多說了.

看完上述內容,是不是對SpringMvc3+extjs4實現上傳與下載功能的代碼解析有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富蕴县| 彭州市| 阜平县| 武义县| 来安县| 大石桥市| 临沭县| 平邑县| 张家川| 安塞县| 合江县| 大石桥市| 营口市| 英德市| 和田县| 浦江县| 芦山县| 西畴县| 隆德县| 土默特右旗| 麻城市| 绥宁县| 萨嘎县| 武隆县| 余庆县| 阳新县| 民县| 凌源市| 鱼台县| 黔江区| 延津县| 南汇区| 临西县| 广安市| 龙游县| 奈曼旗| 贵州省| 南京市| 禄劝| 福建省| 灵台县|