Java 使用“检索控制器错误中的隐藏变量值”;“多部分/表单数据”;上传文件
嗯,我的任务是上传一个文件时,有两个应用程序(应用程序)必须不同类型的上传一个应用程序称为APA,另一个是fSCG。当我删除if-APA-else-SCG时,如果我使用if-APA-else-SCG,代码会工作,我会得到null错误。请参阅下面的代码 在我的JSP中,代码如下所示--Java 使用“检索控制器错误中的隐藏变量值”;“多部分/表单数据”;上传文件,java,html,jsp,servlets,Java,Html,Jsp,Servlets,嗯,我的任务是上传一个文件时,有两个应用程序(应用程序)必须不同类型的上传一个应用程序称为APA,另一个是fSCG。当我删除if-APA-else-SCG时,如果我使用if-APA-else-SCG,代码会工作,我会得到null错误。请参阅下面的代码 在我的JSP中,代码如下所示-- 选择文件: 这是java控制器类 @RequestMapping(value = "/call", method = RequestMethod.POST) public void process(HttpSe
选择文件:
这是java控制器类
@RequestMapping(value = "/call", method = RequestMethod.POST)
public void process(HttpServletRequest request, HttpServletResponse response) throws Exception {
final String app = request.getParameter("app");
**if (app.equals(APA) {** This is where the error is
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter( );
if (!isMultipart) {
return;
}
out.println("<h2> File is successfully uploaded<h2>");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// Parse the request
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String fileName = new File(item.getName()).getName();
String uploadFolder = "C:\\Users;
String filePath = uploadFolder + File.separator + fileName;
File uploadedFile = new File(filePath);
item.write(uploadedFile);
}
}
} catch (FileUploadException ex) {
throw new ServletException(ex);
} catch (Exception ex) {
throw new ServletException(ex);
}
}
else if
@RequestMapping(value=“/call”,method=RequestMethod.POST)
公共无效进程(HttpServletRequest请求、HttpServletResponse响应)引发异常{
最终字符串app=request.getParameter(“app”);
**如果(app.equals(APA){**,这就是错误所在
布尔值isMultipart=ServletFileUpload.isMultipartContent(请求);
response.setContentType(“text/html”);
java.io.PrintWriter out=response.getWriter();
如果(!isMultipart){
返回;
}
out.println(“文件已成功上载”);
DiskFileItemFactory=新的DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
试一试{
//解析请求
列表项=upload.parseRequest(请求);
迭代器iter=items.Iterator();
while(iter.hasNext()){
FileItem=(FileItem)iter.next();
如果(!item.isFormField()){
字符串文件名=新文件(item.getName()).getName();
String uploadFolder=“C:\\Users;
字符串filePath=uploadFolder+File.separator+fileName;
文件上传文件=新文件(文件路径);
item.write(上传文件);
}
}
}catch(FileUploadException-ex){
抛出新的ServletException(ex);
}捕获(例外情况除外){
抛出新的ServletException(ex);
}
}
否则如果
如果(app.equals(SCG)){**Error在这里
上传的代码与上面的几乎相同
}
为什么我不能用if-app上传请给我一些可能的建议举个例子为了在Spring中访问上传的文件,你必须在MVC配置文件中添加以下字段(aka
bean.xml
):
试试这个
@RequestMapping(value = "register")
public void register(@RequestParam(value="file") MultipartFile uploadedFile,@RequestParam(value="app")String app){
System.out.println(uploadedFile.getContentType());
System.out.println(uploadedFile.getOriginalFileName());
System.out.println(uploadedFile.getSize());
}
不要使用这种老式的上传文件的方式。Spring为此目的有注释。你能在现有代码中添加注释吗?我对Spring不太了解,这是一项紧迫的工作Google
Spring upload file
。
<!-- Multipart resolver to be used for file uploading mechanisms -->
<bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1000000"/>
</bean>
@RequestMapping(value = "register")
public void register(MultipartFile uploadedFile){
System.out.println(uploadedFile.getContentType());
System.out.println(uploadedFile.getOriginalFileName());
System.out.println(uploadedFile.getSize());
byte[] fileContents = uploadedFile.getBytes();
}
@RequestMapping(value = "register")
public void register(@RequestParam(value="file") MultipartFile uploadedFile,@RequestParam(value="app")String app){
System.out.println(uploadedFile.getContentType());
System.out.println(uploadedFile.getOriginalFileName());
System.out.println(uploadedFile.getSize());
}