我正在使用Spring Web应用程序,需要为我的其中一个页面实现一个简单的FileUpload。
JSP的页面包含以下代码片段,其中包括用于上载文件的上载字段。
<form:form commandName="editMemberInfoModelObj" method="post" enctype="multipart/form-data"> <h1>Edit Member Information</h1> <table> //Other Form Input Fields ... <tr> <td>File</td> <td><input type="file" name="file"/></td> </tr> <tr> <td><input type="submit" value="Update Info"/></td> </tr> </table> </form:form>
此JSP的模型如下所示
public class EditMerchandiserModel(){ private MultipartFile file; //getters and setters for all the properties }
控制器中用于处理文件上传的代码如下所示
if(model.getFile().isEmpty()) -->THROWING NULLPOINTER EXCEPTION HERE { MultipartFile file = model.getFile(); String fileName = file.getOriginalFilename(); String filePath = "/usr/local/" + fileName; FileOutputStream fos = new FileOutputStream(filePath); try { fos.write(file.getBytes()); } catch (IllegalStateException e) { System.out.println(e); } finally{ fos.close(); } }
我无法访问内部代码,因为它正在读取文件中的空值。为什么不将值绑定到字段?
看起来您的文件输入框的名称为“ file”,而应该绑定的属性的名称为“ photo”(至少您尝试使用“ getPhoto()”来检索它。Spring很聪明,但是它不是那么聪明。