В основном моя проблема заключается в том, что мне нужно скопировать загруженный файл (который помещается во временную папку на моих серверах-провайдерах Tomcat, т. Е. Не локальный Tomcat).
Код, который я использую, работает при развертывании моего проекта на локальном компьютере, но перестает работать при развертывании его в режиме реального времени.
Я обнаружил, что это связано с моими разрешениями в java.policy.
Мне нужно выяснить, как мне получить доступ к папке, в которой Tomcat хранит временный файл с помощью Java.
При чтении catalina.out это ключ, который мне дает журнал.
/ usr / local / tomcat / work / Catalina / имя проекта здесь / контекст проекта здесь / upload_490341a6_12b1d397355_76ce_00000001.tmp
Я размышляю где-то вдоль строк (примечание: это не фактический метод: P)
ServletActionContext.getContext () getSuperHiddenTemporaryCatalog ();.
Фрагмент кода внизу имеет один недостаток.
sourceFile и targetFile в данный момент указывают на один и тот же каталог.
Я хочу, чтобы путь к исходному файлу был временной папкой tomcat.
Заранее спасибо! : D
public String saveImage(File file, String uploadedFileName) {
String path = ServletActionContext.getServletContext().getRealPath("images");
System.out.println(path);
String fullFileName = path + "/" + uploadedFileName;
System.out.println(fullFileName);
boolean successful = false;
try {
File sourceFile = new File(fullFileName);
File targetFile = new File(path + "/" + uploadedFileName);
InputStream in = new FileInputStream(sourceFile);
OutputStream out = new FileOutputStream(targetFile);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
successful = false;
e.printStackTrace();
}
if (successful) {
return "context of project/images/" + uploadedFileName;
} else {
return "";
}
}