Подскажите, пожалуйста, советом.
Есть приложение, установленное на машине, машина расшариная, то есть в другой машины в данной сети можно запустить приложение по ip-адресу.
У меня на главной странице есть форма, куда необходимо передать excel файл. Но загвоздка во в чем, когда на стороне java я обрабатываю файл, естественно он просит, чтобы файл был в том каталоге откуда запускается приложение, то есть абсолютный путь, он как раз есть рабочая машина, на которой установлен томкат, и откуда он запущен. Если файл положить в каталог томката/bin, то все работает прекрасно, стоит загрузить файл например с рабоче стола, то он ругается, что файл не найден, а уж с удаленной машине и подавно не загрузить.
Пожалуйста, дайте совет, как это можно реализовать, я пытался подменять через JS путь на c:\fakepath\имя файла, но это не сработало, на macOS тем более.
Сам файл загружаю при помощи AJAX и далее к контроллере просто принимаю его как тип File. и уже передаю в метод, где его разбираю.
Файл 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);
}
Далее файл передаю в другой класс где разбираю Эксель
public List<GroupListBasicDate> getGroupListBasicDateFromFile(File file) {
try {
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(file);
Решил вопрос небольшим хаком. Путем пересоздания файла в темповой папке томката и уже его забирать. Можно сказать, как подсказал @StrangerintheQ.
private static File convertToFile;
public static File multipartToFile(MultipartFile file) {
try {
convertToFile = new File(System.getProperty("java.io.tmpdir"), file.getOriginalFilename());
convertToFile.createNewFile();
try(FileOutputStream fileOutputStream = new FileOutputStream(convertToFile)) {
fileOutputStream.write(file.getBytes());
}
} catch (IOException e) {
logger.error("Ошибка конвертации файла - {}", e.getMessage());
}
return convertToFile;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Мне необходимо хранить, обновлять и отдавать по запросу некоторые элементы графаПод графом в данном случае я подразумеваю его представление...
Бывают ли такие случаи, когда нужно прописывать и работать напрямую с итератором а не в foreach?
В одном и том же файле делают медиа запрос для:
Здравствуйте! Помогите, пожалуйста, разобраться с индексацией массива arr в следующем примере (учебное упражнение, реализующее рулетку):