Я пытаюсь использовать метод transferTo
на MultipartFile, но у меня возникают проблемы с этим. Ниже мой код:Проблема передачи многостраничного файла в другое место
String videoName = UUID.randomUUID().toString();
File tempVideoFile = new File("src/main/resources/static/campaigns/" + videoName);
//multipart file is video
video.transferTo(tempVideoFile); //this line is what causes an error
Это заканчивается бросая IOException
говоря, что JVM не может найти указанный путь. Вот ошибка:
Invalid file directoryjava.io.IOException: java.io.FileNotFoundException: C:\Users\Jake\workspace\Test App\src\main\resources\static\temp\work\Tomcat\localhost\ROOT\Test App\src\main\resources\static\campaigns\db95aad3-a3ba-489a-a02e-83f5beece9a7 (The system cannot find the path specified)
не 100% уверен, почему это не работает, но я считаю, что правильный каталог должен быть src\main\resources\static\campaigns\db95aad3-a3ba-489a-a02e-83f5beece9a7
вместо одного внутри каталога Tomcat, но я не уверен.
Любые идеи относительно того, почему это не сработает? Путь src\main\resources\static\campaigns\
существует, поэтому я не уверен, почему.
Используйте абсолютный путь. Не полагайтесь на каталог, из которого запускается Tomcat. И не храните данные, которые пользователь загружает в источники вашего проекта. Это бессмысленно. После развертывания все, что у вас есть, - это военный файл, развернутый под tomcat. Нет исходного проекта. И даже тогда, uplodaded данные не являются частью источников проекта. Это данные. –
@JBNizet Я собираюсь разместить на AWS, поэтому я не думаю, что могу использовать абсолютный путь. И я не храню его в исходном каталоге. Я копирую многостраничный файл в источник временно, поэтому я могу проверить длину видео, создать эскиз, загрузить в AWS, а затем удалить временный файл. Есть ли лучший способ сделать это? –
Опять же, после развертывания у вас не будет какой-либо исходной директории. Источники существуют только на рабочих станциях разработчиков. Не на производственных машинах. Если в AWS даже есть файловая система, тогда создайте реальный временный файл в месте, которое, как гарантируется, будет существовать и может быть записано для временных файлов: https://docs.oracle.com/javase/8/docs/api/ Java/IO/file.html # createTempFile-java.lang.String-java.lang.String-. Или в настраиваемом каталоге, который, как вы знаете, будет существовать в процессе производства. –