当我使用 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