Я занимаюсь разработкой сети, которая имеет функцию загрузки PDF-файлов. Но у меня ошибка.Spring MVC загрузить файл в каталог сервера
Вот что ив сделал до сих пор:
Multipart распознаватель:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="10000000"/>
</bean>
форма, которая будет загружать:
<form:form commandName="fileUpload" action="../admin/uploadPDF.do" method="post" enctype="multipart/form-data">
<form:label path="fileData">Upload a File</form:label> <br />
<form:input type="file" path="fileData" />
<input type="submit" value="upload" >
</form:form>
контроллер, что поймать первый запрос раз, когда пользователь пришел, чтобы загрузить page, AdminController.java
@RequestMapping(value = "/admin/module", method = RequestMethod.GET)
public String student(@RequestParam(defaultValue = "")
String message, @RequestParam(defaultValue = "")
String messageType, HttpServletRequest request, ModelMap model)
{
model.addAttribute("message", message);
model.addAttribute("messageType", messageType);
model.addAttribute(new UploadItemBean());
HttpSession session = request.getSession();
String returnVal = Credentials.checkSession(session);
if(returnVal != null)
{
return returnVal;
}
return "als-student/module";
}
контроллер, который будет поймать запрос, когда файл загрузки представляется, UploadController.java
@RequestMapping(value = "*/uploadPDF", method = RequestMethod.POST)
public String getPDF(@RequestParam(defaultValue = "")
String message, @RequestParam(defaultValue = "")
String messageType, @RequestParam("name")
String name, @RequestParam("file")
MultipartFile file, HttpServletRequest request, ModelMap model)
{
...
if(!file.isEmpty())
{
try
{
byte[] bytes = file.getBytes();
System.out.println(bytes + ", " + name);
}
catch(IOException e)
{
e.printStackTrace();
}
}
return "als-student/module";
}
StackTrace:
Neither BindingResult nor plain target object for bean name 'fileUpload' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
at org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:130)
at org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:120)
at org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:90)
...
...
Я также хочу знать, как я могу отправить боб fileUpload
в форме, потому что кажется что это тот, который вызывает ошибку. И я также после загрузки файла, как я могу обработать его для сохранения в папку на сервере Apache (если это хорошая практика)?
Я вижу, Это решает мою первую проблему. Моя вторая проблема заключается в том, как сохранить загруженный файл в папке на сервере? и не является хорошей практикой? – newbie
@newbie Как вы его сохраняете, зависит от вас. Я предлагаю вам выбрать выделенную папку (создать ее, если она не существует) и написать файл прямо там. Вы можете сделать это с помощью метода 'MultipartFile # transferTo' или напрямую прочитать' InputStream' или 'byte []' и записать его в некоторый 'OutputStream'. Читайте на javadoc 'MultipartFile'. –
Получил, так полезно спасибо – newbie