0

マルチパートWebフォームを介してzipファイルをアップロードしています。アップロードに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
}

streamClosed例外が発生しているため、s3.putObjectバケット、s3Objメソッドがストリームを閉じているようです。zipファイルからnextentryを取得する必要があるため、ストリームを閉じないでください。

zis.getBytes()でbyteArrayinputstreamを使用しようとしましたが、getBytes()でさえストリームを閉じます!!

私のオプションは何ですか?

ありがとう

4

0 に答える 0