java Jet3T zipfile上传,流自动关闭
我正在通过一个多部分网络表单上传一个压缩文件。我正在使用groovy和grails进行上传,但是Java(使用spring)中的代码看起来也很相似
def processUpload(){
def uploadedFile = request.getFile('payload')
String vloc = "";
String filename = ""
if(!uploadedFile.empty){
InputStream is = uploadedFile.getInputStream()
java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(is)
def zipentry = zis.getNextEntry();
while(zipentry!=null){
println zipentry.getName()
if( zipentry.getName().indexOf(".")>0){
amazonS3Service.put (zis, zipentry.getName(), session.uid, ".zyx", zipentry.getSize())
}
zipentry = zis.getNextEntry()
}
}
}
其中amazonS3Service.put
如下所示
String put(inputstream, name, uid, ext, length)
{
String mime = mimeExtensionMap[ext.toLowerCase()]
S3Bucket bucket = makeBucket(uid)
S3Object s3Obj = new S3Object()
s3Obj.setAcl AccessControlList.REST_CANNED_PRIVATE
s3Obj.setContentLength length
s3Obj.setContentType mime
s3Obj.setDataInputStream inputstream
s3Obj.setKey name
s3Obj.setBucketName bucket.getName()
s3.putObject bucket, s3Obj
return name
}
似乎是s3。putObject bucket,s3Obj方法正在关闭我的流,因为我得到了streamClosed异常。我需要从zipfile获得Nextery,因此流不应该被关闭
我已经尝试将byteArrayinputstream与zis一起使用。getBytes()但即使是getBytes()也会关闭流
我有什么选择
谢谢
共 (0) 个答案