Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey多部分客户端上载_Java_Rest_Jersey - Fatal编程技术网

Java Jersey多部分客户端上载

Java Jersey多部分客户端上载,java,rest,jersey,Java,Rest,Jersey,我设计了一个多部分Jersey REST服务,如下所示,用于接收多部分请求(文件上载)并将文件保存在磁盘位置: @POST @Path("/Upload") @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.MULTIPART_FORM_DATA) public String uploadFile(@FormDataParam("file") InputStream inputStream,

我设计了一个多部分Jersey REST服务,如下所示,用于接收多部分请求(文件上载)并将文件保存在磁盘位置:

@POST
    @Path("/Upload")
    @Produces(MediaType.TEXT_HTML)
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String uploadFile(@FormDataParam("file") InputStream inputStream,
            @FormDataParam("file") FormDataContentDisposition contentDisposition) {

        System.out.println("Method Entry");
        System.out.println(contentDisposition.getFileName());


        String result = "not Success";
        File file = null;
        if (contentDisposition != null
                && contentDisposition.getFileName() != null
                && contentDisposition.getFileName().trim().length() > 0) {
            try {
                file = new File("xx"
                        + contentDisposition.getFileName());
                new File("yy").mkdirs();
                file.createNewFile();
                OutputStream outputStream = new FileOutputStream(file);
                int read = 0;
                byte[] bytes = new byte[1024];

                while ((read = inputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, read);
                }
                outputStream.flush();
                outputStream.close();
                result = "success";

            } catch (Exception e) {

                System.out.println(e.toString());
            }
        }
        System.out.println("Method Exit");
        return result;

    }
我的测试客户是:

    Client client = Client.create();
    WebResource resource = client
            .resource("xyz");
    String conString = "This is the content";

    FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
    formDataMultiPart.field("file", "Testing.txt");

    FormDataBodyPart bodyPart = new FormDataBodyPart("file",
            new ByteArrayInputStream(conString.getBytes()),
            MediaType.APPLICATION_OCTET_STREAM_TYPE);
    formDataMultiPart.bodyPart(bodyPart);

    String reString = resource.type(MediaType.MULTIPART_FORM_DATA)
            .accept(MediaType.TEXT_HTML)
            .post(String.class, formDataMultiPart);
    System.out.println(reString);
但我无法得到回应

当我使用HTML网页作为客户端通过调用REST服务上传文件时,它工作得很好,但是从REST客户端它不工作


客户机中是否有需要更改的内容

当你说你无法得到回应时,你的确切意思是什么

如果你发送一个文件,你能试试这个吗

   FileDataBodyPart fdp = new  FileDataBodyPart("file",f,MediaType.APPLICATION_OCTET_STREAM_TYPE);
而且

   formDataMultiPart.field("file", "Testing.txt");
例如,不应命名为“文件”,而应命名为“文件名”


对于调试,我建议您使用Wireshark在服务器上进行侦听。

如果您没有文件,但有字符串,则解决方法是执行以下操作:

final FormDataMultiPart FormDataMultiPart=new FormDataMultiPart();
最终字符串值=“Hello World”;
最终FormDataContentDisposition dispo=FormDataContentDisposition//
.name(“文件”)//
.fileName(“test.txt”)//
.size(value.getBytes().length)//
.build();
最终FormDataBodyPart bodyPart=新的FormDataBodyPart(dispo,值);
formDataMultiPart.bodyPart(bodyPart);

有人能帮我在上面的测试客户端代码中添加新的头吗?