jsp部分
<input type="button" class="wd1 btn" value="导入csv" onclick="$('input[id=upload_file]').click();" />
<form id="importForm" action="/esf/ModelAction_uploadCsv.jspx" enctype="multipart/form-data" method="post">
<input type="file" id="upload_file" name="csvfile" onchange="uploadCsv()" accept=".csv" style="display:none;"/>
<input type="hidden" name="fileName" id="fileName" />
</form>
jquery部分
function uploadCsv(){
var csvfile = $.trim($("#upload_file").val()).split("\\")[2]; //获取上传文件
$("#fileName").val(csvfile);
$("#importForm").submit();
}
Action部分(这里采用的是struts2)
//导入CSV文件 TODO
public String uploadCsv() throws Exception{
String fileType = "";
if(fileName != null || "".equals(fileName)){
String[] fileList = fileName.split("\\.");
for (int i = 0; i < fileList.length; i++) {
fileType = fileList[i];
}
if("csv".equals(fileType) || "CSV".equals(fileType)){
// 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = getWebRootDir()+"upload/esf/csvfile/";
savePath = savePath.replace("file:", ""); // 去掉file:
File file1 = new File(savePath);
// 判断上传文件的保存目录是否存在
if (!file1.exists() && !file1.isDirectory())
{
file1.mkdir();
}
try
{
InputStream is = new FileInputStream(csvfile);;// 多文件也适用,我这里就一个文件
byte[] b = new byte[(int)csvfile.length()];
int read = 0;
int i = 0;
while((read = is.read()) != -1)
{
b[i] = (byte)read;
i++;
}
is.close();
SimpleDateFormat tempDate = new SimpleDateFormat("yyyyMMddHHmmss");
String datetime = tempDate.format(new java.util.Date());
String filePath = savePath + "/" + datetime + "_" + fileName;
OutputStream os = new FileOutputStream(new File(filePath));// 文件原名,如a.txt
os.write(b);
os.flush();
os.close();
List<String> dataList=CSVUtils.importCsv(new File(filePath)); //获取到csv文件中的list(csv文件每个元素采用,来分割)
if(dataList!=null && dataList.size() > 1){
for(int k = 1; k < dataList.size(); k++){
if(dataList.get(k) != null){
String[] datalists = dataList.get(k).split(",");
if(datalists[0] != null && !("".equals(datalists[0]))){
//处理自己的业务逻辑
EsfModel esfModel = new EsfModel();
esfModel.setModelid(Long.valueOf(datalists[0]));
esfModel.setModelname(datalists[1]);
esfModel.setGrade(Long.valueOf(datalists[2]));
esfModel.setEvaluatetime(datalists[3]);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(esfModel.getEvaluatetime() == "" || esfModel.getEvaluatetime() ==null){
esfModel.setEvaluatetime(sdf.format(new Date()));
}
esfModel.setIsapply((short)0);
EsfModel em = (EsfModel)_assistAdpater.selectByPrimaryKey("T_ESF_MODEL", esfModel);
if(em == null){
//新增
_assistAdpater.insertSelective("T_ESF_MODEL", esfModel);
}else{
//修改
esfModel.setCreatetime("sysdate");
_assistAdpater.updateByPrimaryKeySelective("T_ESF_MODEL",esfModel);
}
//处理自己的业务逻辑
}
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
return "upload";
}
CSVUtils.java
/**
* 导入
*
* @param file csv文件(路径+文件)
* @return
*/
public static List<String> importCsv(File file){
List<String> dataList=new ArrayList<String>();
BufferedReader br=null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK")); //转码,csv文件一般是gbk码
String line = "";
while ((line = br.readLine()) != null) {
dataList.add(line);
}
}catch (Exception e) {
}finally{
if(br!=null){
try {
br.close();
br=null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
return dataList;
}
这里就全部结束了