写的比较乱,只是大概的把用到的那几个对象和包列了一下,方便以后找的时候知道从哪找。
文件获取用到的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()方法,防止文件少读几个字节。