java - 签名 Applet 和服务器端 Controller 之间的通信

标签 java jsp applet httpclient classcastexception

我创建了一个签名小程序,用于将文件上传到服务器。代码运行良好,但我想将该文件从小程序发送到服务器端 Controller ,其中代码已放置将该文件保存到服务器。

签名 Applet 中的我的 SendFile 代码:

public static void sendFile(String destFileName) throws IOException {       
        String filePrivacy = "Public";
        String fileKeyword = "uploadFileDocumentName";
        String fileComments = "fileComments";
        String fileType = "txt";
        String fileFolder = "/Works";
        String fileDetails = "";
        HttpClient client = new HttpClient();
        PostMethod postMethod = new PostMethod(
                "http://localhost:8080/fileUpload/encryptFileUpload.works?filePrivacy="+filePrivacy+"&fileKeyword="+fileKeyword+"&fileComments="+fileComments+"&fileType="+fileType+"&fileFolder="+fileFolder+"&fileDetails="+fileDetails);

        File f = new File(destFileName);
        Part[] parts = {new FilePart(f.getName(), f)};
        postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); 
        postMethod.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
        client.executeMethod(postMethod);
        postMethod.releaseConnection();
    }

我的 UploadController 的方法如下所示:

@RequestMapping(value = "/encryptFileUpload.works")
    public String uploadEncryptFile(String filePrivacy,
            String fileKeyword,
            String fileComments,
            String fileType,
            String fileFolder,
            HttpServletRequest request, HttpServletResponse response) {
        try {
            Map<String, Object> requestMap = new HashMap<String, Object>();
            requestMap.put(DMSConstants.JCR_FILE_PRIVACY, filePrivacy);
            requestMap.put(DMSConstants.JCR_FILE_KEYWORD, fileKeyword);
            requestMap.put(DMSConstants.JCR_FILE_COMMENTS, fileComments);
            requestMap.put(DMSConstants.JCR_FILE_TYPE, fileType);
            MultipartHttpServletRequest m = (MultipartHttpServletRequest) request;
            MultipartFile file = m.getFile("Filedata");
            Node folderNode = contentPublishService.getFolderNode(fileFolder);
            Node node = contentPublishService.saveFileToRepository(folderNode,
                    file.getInputStream(), file.getOriginalFilename(),
                    requestMap);
        } catch (RepositoryException e) {
            e.printStackTrace();        
        return null;
    }

MultipartHttpServletRequest m = (MultipartHttpServletRequest) request; 行,我收到如下异常:

java.lang.ClassCastException: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
    at com.nmmc.works.web.controller.FileUploadController.uploadEncryptFile(FileUploadController.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)

那么哪里出了问题,我应该在代码中进行哪些更改。第二件事是我可以在 Controller 上获取文件吗?

最佳答案

我找到了该问题的解决方案。这是我在现有代码中所做的更改

我签名的小程序:

MultipartPostMethod mPost =  new MultipartPostMethod(uri);      
mPost.addParameter("Filedata", f.getName(), f);
client.executeMethod(mPost);

现在工作正常。

关于java - 签名 Applet 和服务器端 Controller 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758583/

相关文章:

java - 在 Log4j 中将任意对象传递给 ThreadContext.put()

java - AffineTransform 不会在按键时移动图像

java - 如何从 Java 小程序打开和关闭浏览器窗口?

java - 如何在 Android Studio 中创建自定义图像按钮?

java - 保存为 arraylist 元素的哈希表在分配给 arrayelement 后清除哈希表时会丢失值

JavaFX:将线附加到路径作为动画

java - doGet() Servlet 方法未从 JSP 调用

java - 在 .jsp 页面中显示版本

java - 在 java servlet 中提交响应后无法转发

Java:将 Text.Attribute 对象设置为其默认值时出现空指针异常,为什么?