SpringMvc3+extjs4实现上传与下载功能的代码解析

这篇文章主要讲解了SpringMvc3+extjs4实现上传与下载功能的代码解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

成都创新互联专注于莲花企业网站建设,自适应网站建设,商城网站建设。莲花网站建设公司,为莲花等地区提供建站服务。全流程定制开发,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

本文实例为大家分享了SpringMvc3+extjs4实现上传与下载的具体代码,供大家参考,具体内容如下

最近生活过的很充实,人一直在不停的忙碌着学习新东西。这是我最近遇到的问题,我找度娘n了很久,终于找到了解决方案!

前台代码:

后台代码:

/**
*记录返回结果*/
 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 proAnnextDao;
 
 

 public void setProAnnextDao(ProAnnexDao 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(此文件名可能跟项目的实际情况有区别)中的配置:


  
   
  
  
 
 
 
  
 
 
 

以上的就是上传文件了。 

下载呢?

下载比较简单,代码如下:

@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实现上传与下载功能的代码解析有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。


网页题目:SpringMvc3+extjs4实现上传与下载功能的代码解析
本文链接:http://cdiso.cn/article/pesdce.html

其他资讯