请告诉我,建议。
机器上安装了一个应用程序,机器是共享的,即在同一网络的另一台机器上,可以通过ip-address运行应用程序。
我在主页上有一个表单,我需要在其中提交一个 excel 文件。但问题是,当我在java端处理文件时,自然会要求文件在启动应用程序的目录中,即绝对路径,它只是有一台安装了Tomcat的工作机器,以及从哪里启动。如果文件放在 tomcat/bin 目录下,那么一切正常,值得下载该文件,例如,从桌面,然后发誓找不到该文件,更何况从远程机器,它无法下载。
请就如何实现这一点提供建议,我尝试通过 JS 将路径替换为 c:\fakepath\filename,但它不起作用,尤其是在 macOS 上。
我使用 AJAX 加载文件本身,然后到控制器我只是接受它作为文件类型。我已经将它传递给我解析它的方法。
js文件
function calcGroupRate() {
var file = checkEmpty($('input[name="ratesGroupFile"]')
.val().split("\\").pop());
$.ajax({
url: "rate/group",
datatype: "json",
type: "post",
contentType: "application/json",
data: JSON.stringify({ file: file })
});
}
java控制器
@PostMapping(value = "/group")
public ResponseEntity<Object> totalGroupModel(@RequestBody CalcGroupRateBody object) {
logger.info(object.getFile().getPath());
logger.info(object.getFile().getAbsolutePath());
logger.info(object.getFile().getName());
groupCalculateRate.fetchGroupModels(object.getFile());
return new ResponseEntity<>(groupCalculateRate.getListError(), HttpStatus.OK);
}
接下来,我将文件传输到另一个我解析 Excel 的类
public List<GroupListBasicDate> getGroupListBasicDateFromFile(File file) {
try {
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(file);
用一个小技巧解决了这个问题。通过在 Tomcat tempo 文件夹中重新创建文件并已将其拾取。可以说是@StrangerintheQ 建议的。