Java 使用“检索控制器错误中的隐藏变量值”;“多部分/表单数据”;上传文件

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

嗯,我的任务是上传一个文件时,有两个应用程序(应用程序)必须不同类型的上传一个应用程序称为APA,另一个是fSCG。当我删除if-APA-else-SCG时,如果我使用if-APA-else-SCG,代码会工作,我会得到null错误。请参阅下面的代码

在我的JSP中,代码如下所示--


选择文件:
这是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());
}