1

当我使用 jersey 客户端将其作为多部分上传时,我在解压缩 zip 文件时遇到了一点麻烦。要上传文件,我使用以下代码:

FormDataMultiPart form = new FormDataMultiPart().field("file", file,
                MediaType.MULTIPART_FORM_DATA_TYPE);
   service.path(DSCRM_IMPORT_UPLOAD).type(MediaType.MULTIPART_FORM_DATA)
                .accept(MediaType.TEXT_PLAIN).post(ClientResponse.class, form);

服务是一个网络资源。

在服务器端,我的代码如下所示:

@Path("/upload")
    @Consumes("multipart/form-data")
    @POST
    public Response importData(@FormDataParam("file") InputStream file)
            throws Exception {
        File newFile = new File("/temp.zip");
        final OutputStream out = new FileOutputStream(newFile);
        try {
            ByteStreams.copy(file, out);
        } finally {
            out.close();
        }

        ZipFile zip = new ZipFile(newFile);

在调用 new ZipFile 时,我总是在打开 zip 文件时遇到错误,我想知道为什么。所以我尝试将流输出到字符串 ang 得到以下结果: --Boundary_1_3753023_1334078932448 Content-Type: multipart/form-data Content-Disposition: form-data; name="file" ... ZIP CONTENT ... --Boundary_1_3753023_1334078932448--

所以我的猜测是,--Boundary ... --Boundary_1_3753023_1334078932448-- 使我的 zip 文件损坏,因此无法打开它。

我是否正确使用了多部分?或者我怎样才能摆脱 --boundary 的东西来成功解压缩我的文件......(我知道 --boundary 的东西对于多部分帖子是正确的,但必须以某种方式获取帖子的内容。 ..)

如果您需要任何进一步的信息,请告诉我,我会发布。

提前谢谢!

TJ

4

0 回答 0