我用Excel数据导入来说明文件上传问题
<form action="fileupload.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="param" value="excelImport"/>
Excel数据导入:<input type="file" name="excelFile" />
<input type="submit" value="导入"/>
</form>
问题:如果在fileupload.do中直接用下面方式是取不到数据的
request.getParameter("param");//null
request.getParameter("excelFile");//null
为了获得上传的文件,可以通过apache的commons-fileupload.jar来处理(当然可以选择其它方式)
改成下面这种方式
<form action="fileupload.do?param=excelImport" method="post" enctype="multipart/form-data">
Excel数据导入:<input type="file" name="excelFile" />
<input type="submit" value="导入"/>
</form>
在fileupload.do中
request.getParameter("param");//excelImport
request.getParameter("excelFile");//null
//文件类型用apache的commons-fileupload.jar来处理
if (FileUpload.isMultipartContent(request)) {
//我这里不考虑上传文件的大小问题,否则用DiskFileUpload处理
DefaultFileItemFactory factory = new DefaultFileItemFactory();
FileUpload upload = new FileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
String fileName = item.getName();//文件名
String fieldName = item.getFieldName();//域名(=excelFile)
item.getInputStream();//文件内容
}
}
}
//获得了文件内容的输入流之后,可以用来创建jxl的Workbook。
Workbook.getWorkbook(inputStream);