Я работал на локальном сервере Tomcat, и теперь я только что развернул свое приложение в CloudBees. Все отлично работает, кроме загрузки файла в каталог сервера.
У меня есть такой кусок кода в моем контроллере, который работал у меня на локальном хосте:
@RequestMapping("/main/admin/upload")
public ModelAndView fileUploaded(
@ModelAttribute("uploadedFile") FileUpload uploadedFile,
final HttpServletRequest request,
final HttpServletResponse response, BindingResult result) {
InputStream inputStream = null;
OutputStream outputStream = null;
String pdfDirectory = uploadedFile.getPdfDirectory();
MultipartFile file = uploadedFile.getFile();
String fileName = file.getOriginalFilename();
try {
inputStream = file.getInputStream();
String pdfFileDirectory = request.getSession().getServletContext()
.getRealPath("/")
+ "resources\\pdf\\" + pdfDirectory + "\\";
File newFile = new File(pdfFileDirectory + fileName);
if (!newFile.exists()) {
newFile.createNewFile();
}
outputStream = new FileOutputStream(newFile);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ModelAndView("redirect:/main/admin");
}
Я не уверен, что эта строка работает правильно:
request.getSession().getServletContext().getRealPath("/")
Я уверен, что папки созданы, потому что я добавил их вручную в свой проект eclipse. Я также добавил вручную некоторые файлы в эти папки перед извлечением в CloudBees, и эти файлы доступны, но когда я пытаюсь загрузить файл, используя приведенный выше код, это не работает.