创建一个方法来接收一个zip文件作为Rest Api的输入

时间:2015-05-25 06:45:11

标签: java rest

我有一个类似下面的功能

public void function(ZipEntry zipEntry){
......
}

我想创建一个Rest Api,它将接受一个zip文件作为输入并从中创建一个ZipEntry并将其传递给此函数。我不知道如何创建一个rest api来接受一个zip文件。

请帮帮我。

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法定义:

@Post
@Consumes("application/zip")
public void foo(InputStream is) {...}

在方法体中,您可以使用ZipInputStream获取每个ZipEntry:

ZipInputStream zip = new ZipInputStream(is)

答案 1 :(得分:0)

可能下面的一些代码应该有效......

public class FileService extends Adapter
{
     @GET
     @Produces("application/xml")
     public void serviceMethod(String fileName)
     {
         ZipEntry entry = new ZipEntry(fileName);
         //call your method here
         function(entry);
     }
}

希望这对你有用..

答案 2 :(得分:0)

下面的代码对Jersy来说很合适。

@POST
@Path("/upload/zip")
@Consumes("multipart/form-data")
public Response uploadZippedFile(@FormDataParam("uploadFile") InputStream file) throws IOException {

    OutputStream outpuStream = null;

    try {
        int read = 0;
        byte[] bytes = new byte[1024];
        outpuStream = new FileOutputStream(new File("D:\\Tests" + "test.zip"));
        while ((read = file.read(bytes)) != -1) {
            outpuStream.write(bytes, 0, read);
        }
        outpuStream.flush();
        outpuStream.close();
    } catch (IOException iox) {
        iox.printStackTrace();
    } finally {
        if (outpuStream != null) {
            try {
                outpuStream.close();
            } catch (Exception ex) {
            }
        }
    }

    return Response.status(201).build();
}

需要添加依赖项,

     <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.8</version>
    </dependency>