前言
项目中很多导入导出Excel表格和Word的功能都用到了这个类,今天就来说说这个类都提供了哪些方法,都能做些什么?
MultipartFile类源码
在idea中打开项目,找到用到MultipartFile的地址,Ctrl+单击进入这个类的源码,按alt+7 打开这个类的结构,可以看到这个类中有哪些方法。
- getName():获取表单中文件组件的名字
- getOriginalFilename():得到原来的文件名在客户机的文件系统名称(即获取文件的原名)。
- getContextType():返回文件的内容类型,如excel,image/jpeg等。
- isEmpty():判断是否为空,或者上传的文件是否有内容
- getSize():返回文件大小,以字节为单位
- getBytes():将文件内容转化成一个byte[]返回
- getInputStream():返回InputStream读取文件的内容。
- transferTo(File):将MultipartFile转化为File,保存到一个目标文件中。
- transferTo(Path) :转化为path
MultipartFile的使用
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
2、导入Word文档demo
@ApiOperation(value = "导入world")
@PostMapping(value = "/importWorld")
public FrontResult importWorld(@RequestParam("file")MultipartFile file, HttpServletRequest request, HttpServletResponse response){
//获取文件名
String fileName=file.getOriginalFilename();
//获取文件后缀
String prefix=fileName.substring(fileName.lastIndexOf("."));
if(!".doc".equals(prefix.toLowerCase())&& !".docx".equals(prefix.toLowerCase())){
return FrontResult.build(ResultCodeEnum.FAIL.code,"文件类型必须为.doc或者.docx类型",null);
}
String doc1=null;
File wordFile =null;
try {
InputStream path=file.getInputStream();
if(".docx".equals(prefix.toLowerCase())){
XWPFDocument xdoc=new XWPFDocument(path);
XWPFWordExtractor extractor=new XWPFWordExtractor(xdoc);
doc1=extractor.getText();
}else if(".doc".equals(prefix.toLowerCase())){
HWPFDocument doc=new HWPFDocument(path);
String doc2=doc.getDocumentText();
StringBuilder doc3=doc.getText();
Range rang=doc.getRange();
doc1=rang.text();
}
}catch (IOException e){
log.error(""+e);
}
return FrontResult.build(ResultCodeEnum.SUCCESS.code,"导出成功",doc1);
}
3、在swagger上可以看到Word文档中的内容被输出出来了