背景:上传文件通过文件流(request.getInputStream())的形式获取文件时,会发现会将一部分请求头存在文件流中,导致之后解析的时候失败。多余的请求头内容如下:
----------------------------774180277227893587905937
Content-Disposition: form-data; name="file"; filename="1.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
解决思路:将文件先保存到txt文件中,之后转换成对应的文件(excel)
inputStream = request.getInputStream();
String txtPath = this.getClass().getResource("/").getPath() + "excel.txt";
String excelPath = this.getClass().getResource("/").getPath() + "excel.xls";
File file = new File(txtPath);
logger.info(file.getPath());
FileUtils.writeToFile(file, inputStream);
RandomAccessFile raf = new RandomAccessFile(txtPath,"r");
OutputStream fout = new FileOutputStream(excelPath);
//读取前四行内容
logger.info(raf.readLine());
logger.info(raf.readLine());
logger.info(raf.readLine());
logger.info(raf.readLine());
int d = 0;
while((d = raf.read())!=-1){
fout.write(d);
fout.flush();
}
fout.close();
File excelFile = new File(excelPath);
//InputStream fileInput = Files.newInputStream(file.toPath());
InputStream fileInput = FileUtils.openInputStream(excelFile);