在代号一中使用分段请求上传文件时出现问题

Issue while Upload file using Multipart Request in Codename One

我试图将图像上传到服务器,它向我抛出错误 405:找不到方法,但是从同一个 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);
    }
}

您不能上传到任意 URL,您需要有一个在 POST http 方法上处理多部分的 servlet。

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

请注意,您还在代码中做了一些其他 "problematic" 事情,例如使用 PRIORITY_CRITICAL 和使用 InputStream API 而不是只给文件 URL (哪个效率更高)。