sprintboot文件上传XML文件并解析
2023-09-14 09:04:59 时间
sprintboot文件上传XML文件并解析
这里只有读取上传的XML并针对上传的【MultipartFile】转换成对应的【File】文件进行后续操作。
目录
环境:
系统环境:win10
开发工具:IntelliJ IDEA 2021.3.2
测试工具:Postman
注解:
@RestController:将@ResponseBody与@Controller合并成了一个注解来用。
@CrossOrigin:支持跨域。
@SpringBootApplication:设置启动项
端口号设置:server.port=8080
pom.xml:
这里用到了解析xml
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
文件操作,所以需要将上传的【MultipartFile】类型的对象转换成【File】,这里单独添加了一个方法。
这里留了注释,可以直接使用,没什么好解释的。
/**
* 将MultipartFile对象转换成File文件
* @param multipartFile
* @return
*/
public static File MultipartFileToFile(MultipartFile multipartFile) {
File file = null;
//判断是否为null
if (multipartFile.equals("") || multipartFile.getSize() <= 0) {
return file;
}
//MultipartFile转换为File
InputStream ins = null;
OutputStream os = null;
try {
ins = multipartFile.getInputStream();
file = new File(multipartFile.getOriginalFilename());
os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ins != null) {
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return file;
}
测试编码:
@PostMapping(value = "/api/Index")
public Object Index(MultipartFile files) {
if (files.getSize() == 0) {
return new ERROR("格式化失败", null);
}
Document document = null;
SAXReader saxReader = new SAXReader();
try {
document = saxReader.read(MultipartFileToFile(files));
Element root = document.getRootElement();
System.out.println(root);
return new SUCCESS("格式化成功", root);
} catch (Exception ex) {
ex.printStackTrace();
}
return new ERROR("数据结构异常", null);
返回对象
class BackResult {
public BackResult(String message, Object result) {
this.state = true;
this.message = message;
this.result = result;
}
public boolean isState() {
return state;
}
public void setState(boolean state) {
this.state = state;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
public boolean state;
public String message;
public Object result;
}
class SUCCESS extends BackResult {
public SUCCESS(String message, Object result) {
super(message, result);
this.state = true;
}
}
class ERROR extends BackResult {
public ERROR(String message, Object result) {
super(message, result);
this.state = false;
}
}
上传文件测试:
访问方式【POST】,访问路径【http://127.0.0.1:8080/api/Index】,这里面我给操作步骤了,挨个点就行,如果的图片就直接读取,其它文件类型就解析即可。
相关文章
- <input type=file>文件上传
- aria2-pro 下载文件没有权限操作的解决办法
- docker 上传本地镜像_docker从本地文件拉取镜像
- Win下终端实现文件上传和下载执行
- Vue引入外部Js文件并使用方法超级无敌详细的教程「建议收藏」
- golang http.Client 为什么传入文件描述符就无法重定向
- Python加载的文件哪里去了?(2)
- postgresql 如何查看pg_wal目录下xlog文件总大小
- Java利用dom4j生成xml文件、解析XML详解编程语言
- SpringMVC在Servlet3.0下上传文件的示例代码详解编程语言
- springMVC3学习(十一)–文件上传CommonsMultipartFile详解编程语言
- 上传文件至Oracle数据库中(上传文件到oracle)
- 应用Xml.Linq读xml文件详解编程语言
- 优化Linux静态库文件优化:追求更高效率(linux静态库文件)
- Linux中使用rz命令上传文件(linuxrz命令)
- MySQL中解析XML文件的方法(mysql解析xml)
- Linux轻松拷贝文件路径:快速掌握复制路径技巧。(linux复制路径)
- Linux下编辑XML文件的快捷方法(linux 编辑xml)
- MySQL 如何导入 XML 文件(mysql导入xml文件)
- Oracle 导出XML文件的技巧(oracle写xml文件)
- Oracle修改XML深入挖掘XML文件的变化(oracle修改xml)
- MySQL限制文件大小导致上传失败(mysql上传文件过大)
- FTP自动上传文件的perl脚本以及配置文件
- jsp文件上传与下载实例代码
- asp.net实现上传文件显示本地绝对路径的实例代码
- 封装ThinkPHP的一个文件上传方法实例