Spring MultipartFile 上传 与 excel处理

来源:互联网 发布:淘宝街拍图片 编辑:程序博客网 时间:2024/05/13 04:13

转载来源http://blog.csdn.net/libaolin198706231987/article/details/52524133

一、配置

1、*-servlet.xml  (WebApploicationContext)

  1. <!-- file upload -->
  2.     <bean id="multipartResolver"
  3.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  4.         <property name="maxUploadSize" value="5000000"/>
  5.         <property name="maxInMemorySize" value="4096"/>
  6.         <property name="defaultEncoding" value="GBK"/>
  7.     </bean>
注意下面的commandClass值,


  1. <!-- === excel文件上传页面=== -->
  2.     <bean name="/excelupload.do" class="test.ExcelUpload">
  3.         <property name="formView" value="atest"/>
  4.         <property name="successView" value="atest"/>
  5.         <property name="commandName" value="upload"/>
  6.         <property name="commandClass" value="test.UploadDTO"/>
  7.     </bean>

二、代码

1、使用MultipartFile

  1. import java.io.Serializable;

  2. import org.springframework.web.multipart.MultipartFile;

  3. public class UploadDTOimplementsSerializable{

  4.     private MultipartFile file;

  5.     /**
  6.      * @return Returns the file.
  7.      */
  8.     public MultipartFile getFile(){
  9.         return file;
  10.     }

  11.     /**
  12.      * @param file The file to set.
  13.      */
  14.     public voidsetFile(MultipartFilefile){
  15.         this.file=file;
  16.     }


  17. }

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.Enumeration;
  7. import java.util.Iterator;
  8. import java.util.List;

  9. import javax.servlet.ServletException;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;

  12. import org.apache.poi.hssf.usermodel.HSSFCell;
  13. import org.apache.poi.hssf.usermodel.HSSFRow;
  14. import org.apache.poi.hssf.usermodel.HSSFSheet;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.springframework.validation.BindException;
  17. import org.springframework.web.bind.ServletRequestDataBinder;
  18. import org.springframework.web.multipart.MultipartFile;
  19. import org.springframework.web.multipart.MultipartHttpServletRequest;
  20. import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
  21. import org.springframework.web.servlet.ModelAndView;
  22. import org.springframework.web.servlet.mvc.SimpleFormController;

  23. public class ExcelUploadextends SimpleFormController{

  24.     protected ModelAndView onSubmit(HttpServletRequestrequest,
  25.             HttpServletResponse response, Object command,BindException errors)
  26.             throws Exception {
  27.         logger.info("Excel upload=================================start");

  28.         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
  29.         MultipartFile multipartFile = multipartRequest.getFile("file");

  30.         Enumeration names = request.getParameterNames();
  31.         while (names.hasMoreElements()){
  32.             String name = (String) names.nextElement();
  33.             logger.debug(name+"="+request.getParameter(name));
  34.         }
  35.         
  36.         
  37.         logger.info("Excel upload=================================end");
  38.         return super.onSubmit(request, response,command, errors);

  39.     }
  40. }
2、不使用MultipartFile

  1. import java.io.Serializable;

  2. import org.springframework.web.multipart.MultipartFile;

  3. public class UploadDTOimplementsSerializable{

  4.     private byte[]file;

  5.     /**
  6.      * @return Returns the file.
  7.      */
  8.     public byte[]getFile(){
  9.         return file;
  10.     }

  11.     /**
  12.      * @param file The file to set.
  13.      */
  14.     public voidsetFile(byte[]file){
  15.         this.file=file;
  16.     }


  17. }


  1. public class ExcelUpload extends SimpleFormController{
  2.     protected void initBinder(HttpServletRequest request,
  3.             ServletRequestDataBinder binder)throws ServletException{
  4.         binder.registerCustomEditor(byte[].class,
  5.                 new ByteArrayMultipartFileEditor());
  6.     }
  7.     protected ModelAndView onSubmit(HttpServletRequestrequest,
  8.             HttpServletResponse response, Object command,BindException errors)
  9.             throws Exception {
  10.         logger.info("Excel upload=================================start");

  11.         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
  12.         MultipartFile multipartFile = multipartRequest.getFile("file");

  13.         logger.debug(Long.toString(multipartFile.getSize()));
  14.         logger.info("Excel upload=================================end");
  15.         return super.onSubmit(request, response,command, errors);

  16.     }
  17. }

附:

1、另存上传文件


  1. public void SaveFileFromInputStream(InputStreamstream,String path,
  2.             String filename)throwsIOException{
  3.         FileOutputStream fs = new FileOutputStream(path+"/" + filename);
  4.         byte[]buffer= new byte[1024* 1024];
  5.         int bytesum = 0;
  6.         int byteread = 0;
  7.         while ((byteread = stream.read(buffer))!=-1) {
  8.             bytesum += byteread;
  9.             fs.write(buffer, 0, byteread);
  10.             fs.flush();
  11.         }
  12.         fs.close();
  13.         stream.close();
  14.     }

2、Excel文件处理(POI - 2.5)

  1. private int getTargetList(MultipartFile multipartFile,
  2.             HttpServletRequest request,Date insuranceBeginTime,String planCode)
  3.             throws Exception {
  4.         String fileType = "";
  5.         try {
  6.             String fileName = multipartFile.getOriginalFilename();
  7.             fileType = fileName.substring(fileName.lastIndexOf(".")+ 1,
  8.                     fileName.lastIndexOf(".")+ 4);
  9.         } catch(Exception e){
  10.             logger.error(e);
  11.             fileType = "";
  12.         }
  13.         if (!fileType.toLowerCase().equals("xls")){
  14.             // throw new BusinessServiceException("导入的文件格式不正确,应该不是excel文件");
  15.             this.logger.debug("导入的文件格式不正确,应该不是excel文件");
  16.             return 0;
  17.         }
  18.         HSSFWorkbook wb = null;
  19.         try {
  20.             wb = new HSSFWorkbook(multipartFile.getInputStream());
  21.             // logger.debug(wb.getNumberOfSheets());
  22.             HSSFSheet sheet = wb.getSheetAt(0);
  23.             logger.debug("sheet name = "+wb.getSheetName(0));
  24.             for(int i= sheet.getFirstRowNum();i<=sheet.getLastRowNum();i++){
  25.                 HSSFRow row = sheet.getRow(i);
  26.                 Iterator cells = row.cellIterator();
  27.                 while(cells.hasNext()){
  28.                     HSSFCell cell = (HSSFCell) cells.next();                    
  29.                     logger.debug(cell.getStringCellValue());                    
  30.                 }
  31.             }
  32.             logger.debug("last row = "+sheet.getLastRowNum());
  33.             
  34.             return wb.getNumberOfSheets();
  35. //            return sheet.getFirstRowNum();
  36.         } catch(Exception e){
  37.             logger.error(e);
  38.             // throw new
  39.             // BusinessServiceException("未知原因!保存Excel文件时,请不要将鼠标最终定位在Excel中的可以下拉选值的列上。");
  40.         }
  41.         // ApplicationContext ctx =
  42.         // ApplicationWebContexton.getInstance(request);
  43.         // IImportExcelTarget excelParser = (IImportExcelTarget)
  44.         // ctx.getBean(planCode);
  45.         // return excelParser.getTargetList(wb, request,
  46.         // insuranceBeginTime,planCode);
  47.         return 0;
  48.     }

3、request.parameters = 与上传文件同表单的 field value

  1. <form action="excelupload.do"method="post" enctype="multipart/form-data"name="form1">
  2.   <tablewidth="100%"border="0" cellspacing="1" cellpadding="0">
  3.     <tr>
  4.       <td>&nbsp;</td>
  5.       <td>&nbsp;</td>
  6.       <td>&nbsp;</td>
  7.     </tr>
  8.     <tr>
  9.       <td>&nbsp;</td>
  10.       <td><label>上传
  11.           <input type="file"name="file">
  12.       </label></td>
  13.       <td>&nbsp;</td>
  14.     </tr>
  15.     <tr>
  16.       <td>&nbsp;</td>
  17.       <td>&nbsp;<inputname="assas"type="text"id="assas"value="asdsadas">
  18.       <input type="submit"name="Submit"value="提交"></td>
  19.       <td>&nbsp;</td>
  20.     </tr>
  21.   </table>
  22. </form>

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 前缘送纸纸板翘怎么办 三菱AL 1R.2报警怎么办 工作好但领导不好伺候怎么办 孕妇憋尿憋的小腹疼怎么办 怀孕憋尿憋的小腹疼怎么办 半夜憋尿憋的小腹疼怎么办 新生儿大便次数较多怎么办 母猎生下三天没有奶怎么办 孩孑大便干不爱喝水怎么办 发那科1050报警怎么办 plc模块bf亮了怎么办 plc模块df亮了怎么办 西门子触摸屏进不了主画面怎么办 pos机显示白屏怎么办 洗衣机的门坏了怎么办 西门子洗衣机门坏了怎么办 拆线线断在肉里怎么办 总线绝对值编码器方向反了怎么办 台达伺服报警009怎么办 台达plc禁止上传怎么办? 潜水泵电机启动绕组断线了怎么办? 永磁电机磁没了怎么办 热水器热水管坏了怎么办 松下伺服驱动器坏了怎么办 步进电机功率小了怎么办 电三轮电机坏了怎么办 电动车钢圈撞变形了怎么办 电动车后轮钢圈变形了怎么办 软油管接头渗油怎么办 一只单眼皮一只双眼皮怎么办 儿童轻轻泥干了怎么办 5d轻轻泥干了怎么办 手机炉石一直闪退怎么办 鸟之羽任务失败怎么办 巫师3没血没药怎么办 荣威rx5灯光不亮怎么办 点滴打没了回血怎么办 加了低标号的油怎么办 别克车钥匙丢了怎么办 霜子哀伤断了怎么办 侧车窗外有雨水怎么办