在Codename One中使用Multipart Request上传文件时发出问题

时间:2015-04-04 07:15:27

标签: java codenameone

我尝试将图像上传到服务器,它会抛出Error 405:Method not found,但是从同一个Url我可以下载任何文件..以下是我试过的代码。

 private void uploadFileToServer(ActionEvent event) throws IOException
{
    try{
        InfiniteProgress ip = new InfiniteProgress();
        Dialog dlg = ip.showInifiniteBlocking();
        dlg.show();

        MultipartRequest request = new MultipartRequest();
        FileSystemStorage fs = FileSystemStorage.getInstance();
        String fileUri = fs.getAppHomePath() + "654319032015150536IR.png";

        request.setUrl("http://192.XX.XX.58:XX/HttpFolder/");
        request.setPost(true);

        InputStream is = FileSystemStorage.getInstance().openInputStream(fileUri);
        request.addData("file", is, FileSystemStorage.getInstance().getLength(fileUri), "image/png");
        request.setFilename("file", fileUri);
        request.setPriority(ConnectionRequest.PRIORITY_CRITICAL);
        NetworkManager.getInstance().addToQueue(request);
        dlg.dispose();

        if (event instanceof NetworkEvent) {
            NetworkEvent ne = (NetworkEvent)event;
            Dialog.show("Result:", ne.getMetaData().toString(), "","");
        }
    }
    catch(Exception e){
        Dialog.show("ERROR", e.getMessage(), "OK",null);
    }
}

1 个答案:

答案 0 :(得分:0)

您无法上传到任意URL,您需要拥有一个在POST http方法上处理multipart的servlet。

我们在这里有一个包含服务器端代码的演示:http://codenameone.com/blog/build-mobile-ios-apps-in-java-using-codename-one-on-youtube.html

请注意,您还在代码中执行了一些其他“有问题”的事情,例如使用PRIORITY_CRITICAL并使用InputStream API,而不仅仅是提供文件URL(效率更高)。