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

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

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

Spirng 的servlet配置文件

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!--添加国际化属性文件-->

<!-- Resource Bundle -->
 <bean id="messageSource"
  class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
   <list>
    <value>messages</value>
   </list>
  </property>
 </bean>
<!-- 上传文件的大小配置-->   

<property name="maxUploadSize" value="5000000"/>
<!--默认的编码格式utf-8-->   

<property name="defaultEncoding" value="UTF-8" />  
    </bean>   

urlmapping的配置如下

<bean id="urlMapAuthenticate"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<prop key="/p_pgm_insert.htm">pPgmInsertController</prop>
    <prop key="/p_img_insert.htm">pImageController</prop>

表单如下:

<form name="form1" method="post" action="" οnsubmit="return checkfile();" ENCTYPE="multipart/form-data">
   <div>
   <div style="text-align:center;">    
    excel数据:<input type="file" id="file" name="file" size="40"> (只能上传xls的excel) <!--文件的表单样子基本上一样-->
   <input type="submit" name="submit" value="提交"> 

控制器如下:

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> playbilltemp=(List<PlayBillTemp>) 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()方法,防止文件少读几个字节。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值