springboot中TXT,Excel文件上传服务器、读取
一、首先设置form表单的enctype属性enctype=“multipart/form-data”,代表的是可以上传文件类型;
<form action="upload" method="post" enctype="multipart/form-data" hidden="hidden" id="textform">
文件:<input type="file" name="file">
<input type="submit" value="提交">
</form>
二、TXT文件的上传与读取
controller层
public void upfile(MultipartFile file, HttpServletRequest req) {
//创建文件存放位置的路径,路径可以自定义
String path = req.getServletContext().getRealPath("/wenjian");
//根据创建的路径,生成存放的文件。
File file1=new File(path);
//此文件夹会生成与src/main/webapp中。
file1.mkdirs();
//生成存放的文件夹之后,再创建上传的文件的名字。名字可以自定义。getOriginalFilename()得到文 //件上传的原始名字。UUID.randomUUID()生成一个随机的ID。
String filena = file.getOriginalFilename();
String filename = UUID.randomUUID().toString()+filena;
生成最后一级的文件
File files = new File( file1+"/"+filename);
将上传的文件上传;
file.transferTo(files);
// 正则表达式 将字符串中的\全部改成/
files3 = files3.replaceAll("\\\\", "/");
try {
File file5=new File(files3);
// springboot中改变编码格式 !!!!!!!!!!!!!!!!!!
BufferedReader read=new BufferedReader(new InputStreamReader(new FileInputStream(file5),"GBK"));
Stream<String> line = read.lines();
Iterator<String> it=line.iterator();
while(it.hasNext()) {
String next = it.next();
ser.path(files3,next);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
二、Excel文件的上传与读取
public void upfile(MultipartFile file, HttpServletRequest req) {
//创建文件存放位置的路径,路径可以自定义
String path = req.getServletContext().getRealPath("/wenjian");
//根据创建的路径,生成存放的文件。
File file1=new File(path);
//此文件夹会生成与src/main/webapp中。
file1.mkdirs();
//生成存放的文件夹之后,再创建上传的文件的名字。名字可以自定义。getOriginalFilename()得到文 //件上传的原始名字。UUID.randomUUID()生成一个随机的ID。
String filena = file.getOriginalFilename();
String filename = UUID.randomUUID().toString()+filena;
生成最后一级的文件
File files = new File( file1+"/"+filename);
将上传的文件上传;
file.transferTo(files);
// 正则表达式 将字符串中的\全部改成/
files3 = files3.replaceAll("\\\\", "/");
try {
// 创建输入流,读取Excel
InputStream is = new FileInputStream(files3);
// jxl提供的Workbook类
Workbook wb = Workbook.getWorkbook(is);
List<List> outerList=new ArrayList<List>();
// 得到Excel中一共多少页
int sheet_size = wb.getNumberOfSheets();
for (int index = 0; index < sheet_size; index++) {
// 每一张页就是一个Sheet对象
Sheet sheet = wb.getSheet(index);
// sheet.getRows()返回该页的总行数
for (int i = 0; i < sheet.getRows(); i++) {
List innerList=new ArrayList();
// sheet.getColumns()返回该页的总列数
for (int j = 0; j < sheet.getColumns(); j++) {
//这一步就是读取的excel文件的内容。
String cellinfo = sheet.getCell(j, i).getContents();
if(cellinfo.isEmpty()){
continue;
}
innerList.add(cellinfo);
System.out.print(cellinfo);
}
outerList.add(i, innerList);
// System.out.println(outerList);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
在main目录下自定义创建一个webAPP文件夹 上传的文件就存放在这里