html内容:
<input type="file" id="file" name="file_name" value="选择文件" size="80">
用ajax异步上传文件,代码如下:
var param = {
"code" : "123456",
"code_name" : "test"
};
$.ajaxFileUpload({
url : action_url, // 发送并处理的servlte
secureuri : false,
fileElementId : 'file', // 文件选择框的id属性
data : param, //入参,表单格式
type : "post", //post请求
dataType : "json", //数据格式
success : function(data, status) {
if (data.status == '1') {
alert("操作成功!");
} else {
alert("操作失败," + data.message + "。");
}
},
error : function(data, status, e) {
if (data.status == "0") {
if (data.message != null && data.message != "") {
alert(data.message);
} else {
alert("后台代码异常。");
}
}
}
});
在servlet中获取文件内容时
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
fileUpload.setHeaderEncoding("UTF-8");// 设置文件上传编码格式
OutputStream outputStream = null;
InputStream inputStream = null;
List items = fileUpload.parseRequest(request);//获取上传文件并解析成 list
String code = "";
String code_name = "";
for (Iterator iterator = items.iterator(); iterator.hasNext();) {//遍历请求内容
FileItem name = (FileItem) iterator.next();
if (name.isFormField()) {//判断是否是普通的表单类型
if("code".equals(name.getFieldName())){
code = name.getString("UTF-8");
}
if("code_name".equals(name.getFieldName())){
code_name = name.getString("UTF-8");
}
}else{
String fileName = name.getName();
String lastFileName = request.getRealPath("/") + "导入模板"
+ fileName.substring(fileName.lastIndexOf("."));
outputStream = new FileOutputStream(new File(lastFileName));
inputStream = name.getInputStream();
byte[] bs = new byte[1024];
while (null != inputStream && (inputStream.read(bs)) != -1) {
outputStream.write(bs);
}
InputStream ins = new FileInputStream(new File(lastFileName));
if (!ins.markSupported()) {
ins = new PushbackInputStream(ins, 8);
}
Workbook workBook = null;
if (POIFSFileSystem.hasPOIFSHeader(ins)) {
workBook = new HSSFWorkbook(ins);
} else if (POIXMLDocument.hasOOXMLHeader(ins)) {
workBook = new XSSFWorkbook(OPCPackage.open(ins));
}
Sheet st = workBook.getSheetAt(0);
total = st.getLastRowNum();
……//取文件内容就省略了
}
}