Spring Mvc实现文件的上传和下载,将文件直接读取到数据库

写的比较乱,只是大概的把用到的那几个对象和包列了一下,方便以后找的时候知道从哪找。

文件获取用到的jar包commons-fileupload-1.2.jar。

Spirng 的servlet配置文件

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">


    class="org.springframework.context.support.ResourceBundleMessageSource">
  
   
    messages
   

  

 

   


   

  
       

urlmapping的配置如下

  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

pPgmInsertController
    pImageController

表单如下:


   

   
    
    excel数据: (只能上传xls的excel) 
    

控制器如下:

public class PPgmInsertController extends SimpleFormController {
     private PPgmManager ppgmmanager;
 @Override
 protected ModelAndView onSubmit(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  // TODO Auto-generated method stub
  ModelAndView mav=new ModelAndView(this.getSuccessView());
     
        return mav;
 }
 @Override
 protected void onBindAndValidate(HttpServletRequest request,
   Object command, BindException errors) throws Exception {
  // TODO Auto-generated method stub
  //绑定表单对象
  FileUploadBean bean=(FileUploadBean)command;
  //获取上传文件的信息。
  MultipartFile file =bean.getFile(); 
  //poi读取上传文件内容保存到数据库
  System.out.println("文件大小:"+file.getSize());
  InFile xlsInFile = new PgmXlsInsert();
  PPgmManager pgmmanager=new PPgmManager();
  List playbilltemp=(List) xlsInFile.readXls(file.getInputStream());//自定义一个读取excel的方法通过poi读取excel
  if(playbilltemp==null)
  {
   errors.rejectValue("file","error.file", "excels格式有问题,请您检查一下1");
   errors.reject("error.file", "excels格式有问题,请您检查一下2"); 
  }
  else
  {
   System.out.println("数据插入情况:"+pgmmanager.savePlayBillTemp(playbilltemp));

  }  
  
  super.onBindAndValidate(request, command, errors);
 }

 

 public PPgmManager getPpgmmanager() {
  return ppgmmanager;
 }

 public void setPpgmmanager(PPgmManager ppgmmanager) {
  this.ppgmmanager = ppgmmanager;
 } 
}

//读取excel时对于数字和字符串的处理

 private String getStringCellValue(HSSFCell cell) {  
           String strCell = "";  
           DecimalFormat df = new DecimalFormat("0"); 
           switch (cell.getCellType()) {  
          case HSSFCell.CELL_TYPE_STRING:  
              strCell = cell.getStringCellValue();  
              break;  
           case HSSFCell.CELL_TYPE_NUMERIC:  
               strCell =df.format(cell.getNumericCellValue());;  
               break;  
           case HSSFCell.CELL_TYPE_BOOLEAN:  
               strCell = String.valueOf(cell.getBooleanCellValue());  
               break;  
           case HSSFCell.CELL_TYPE_BLANK:  
               strCell = "";  
               break;  
           default:  
               strCell = "";  
               break;  
           }  
           if (strCell.equals("") || strCell == null) {  
               return "";  
           }  
           if (cell == null) {  
               return "";  
           }  
           //最后替换字符串的空格。
           return strCell.replaceAll(" ", "");
 
       }  

//对于图片的的上传下载接收控制器方法一样,不同的是图片对象的处理是oracle对于blob对象的存储和读取方法。了解

BufferedInputStream ins=new BufferedInputStream(imgin); 对象的read()方法,防止文件少读几个字节。

 

你可能感兴趣的:(java,web,测试)