很抱歉,我没有找到这样的问题,所以我创建了一个新问题。
我在学习java,这是我第一个真正的实践项目。我需要做一个文件解析器。所以我做了一个文件,它的工作。但我需要它来处理文件目录。
所以,考虑到我已经改变了
File to parse: <input type="file" th:field="*{address}" id="address">
在
File to parse: <input type="file" th:field="*{address}" id="address" webkitdirectory directory multiple>
它的作品相当不错的看法,我可以选择所有的目录了。
但是,我应该如何改变我的控制器,使其不使用一个文件,而是使用一个文件列表?我应该创建新模型吗?
我看的另一种方式是,在视图中选择目录的方式,而不是文件。但我没有找到如何使用文件资源管理器(就像浏览器使用input type=“file”)那样)。
另外,我还做了一个类,可以解析几个文件。在文件较多的情况下,如何与视图和逻辑建立“关系”是主要问题。
有人能帮忙吗?谢谢!
我的文件模型:
public class File {
private String address;
public File() {
}
public File(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
我的控制器:
@Controller
@RequestMapping("/parser")
public class ParserController {
private final FileParser fileParser;
@Autowired
public ParserController(FileParser fileParser) {
this.fileParser = fileParser;
}
@GetMapping()
public String parser(Model model) {
model.addAttribute("file", new File());
return "parser/parser";
}
@PostMapping
public String create(@ModelAttribute("file") File file) throws IOException {
FileParser.parse(file);
return "parser/done";
}
}
我的解析器(不是真正的逻辑,只是示例):
@Component
public class FileParser {
public static void parse(File file) throws IOException {
Path pathFrom = Path.of(file.getAddress());
Path pathTo = Files.createFile(Path.of("C:\\Users\\Xiaomi\\Desktop\\parsedtest.txt"));
List<String> list = new ArrayList<>();
list = Files.readAllLines(pathTo);
list.add("file");
list.add("was");
list.add("parsed");
FileOutputStream fos = new FileOutputStream(String.valueOf(pathTo));
PrintStream printer = new PrintStream(fos);
printer.flush();
printer.close();
FileWriter writer = new FileWriter(String.valueOf(pathTo));
for (String lister:
list) {
writer.write(lister+"\n");
}
writer.close();
}
和视图:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>MEL Parser</title>
</head>
<body>
<form enctype="multipart/form-data" method="POST" action="/parser" th:object="${file}">
File to parse: <input type="file" th:field="*{address}" id="address" webkitdirectory directory multiple>
<br/>
<br/>
<input type="submit" value="Parse">
</form>
</body>
</html>
2条答案
按热度按时间9gm1akwq1#
要用一种方法接收多个文件,请尝试以下操作
另外,在这种情况下,一个解决方案是将javascript代码放在页面上,逐个发送文件
qnzebej02#