簡體   English   中英

使用“ multipart / form-data”上傳文件以獲取Controller Error中的隱藏變量值

[英]Retrieving hidden variable value in Controller Error using “multipart/form-data” to upload file

好吧,我的任務是上傳文件,並且有兩個必須以不同類型上傳的應用程序(app),一個應用程序稱為APA,另一個名為fSCG。 當我刪除APA else SCG的代碼時,如果我使用APA else SCG的代碼,則代碼可以工作,並且出現空錯誤。 請看下面的代碼

在我的JSP中,代碼如下-

<form name="upload" action="/call" enctype= "multipart/form-data" method="POST">
    Select file: <input type="file" name="file"/>
    <input type="hidden" name="app" value="${app}"/>
    <input type="submit" value="Upload"/>
</form>

這是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 

if(app.equals(SCG)){**錯誤,此處上傳的代碼與上面幾乎相同}

為什么我無法上傳應用程序,請給我建議一些可能的例子

為了在Spring中訪問上載的文件,您必須在MVC配置文件(aka bean.xml )中添加以下字段:

<!-- 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>

然后,您可以通過以下方式訪問Controller類中上載文件的內容和元數據:

@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());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM