0

フォームを処理する GAE に httpservlet があります。フォームにはボタンがあります。サーブレットでは、単一ファイルのアップロードを処理するために apache.commons.fileupload を使用しますが、複数のファイル配列を処理する方法がわかりません...助けていただければ幸いです。

形:

<form id="fileupload" action="/Save" method="Post" enctype="multipart/form-data">
    <input name="title" type=text />
    <textarea name="info"></textarea>
    <input type="file" name="files[]" multiple>
    <input id="save" type="submit" value="Save this">
</form>

サーブレット:

FileItemIterator iter = upload.getItemIterator(req);
while (iter.hasNext()) {
    FileItemStream item = iter.next();
    String name = item.getFieldName();
    InputStream stream = item.openStream();
    if (item.isFormField()) {
        System.out.println("Form field " + name + " with value "
            + Streams.asString(stream) + " detected.");
    } else {
        // name here will be "files[]"
        System.out.println("File field " + name + " with file name "
        + item.getName() + " detected."); 
        //MY NONWORKING ATTEMPT AT HANDLING THE FILES[] ARRAY: <- this is my question, how to do this?
        Object files[] = Streams.copy(stream);
        for(int i = 0; i < files.size(); i++){
            String fileType = files[i].getContentType();
            Blob imageBlob = new Blob(Files[i]);
        }
    }
}
4

1 に答える 1

0

1 つの からすべてのファイルを取得しようとしていますがFileItemStream、実際にはそれぞれFileItemStreamが独自のファイルです。

// INSERT THIS INSTEAD OF YOUR NONWORKING PART
String filename = item.getName();
String contentType = item.getContentType();
int len;
byte[] buffer = new byte[8192];
while ((len = stream.read(buffer, 0, buffer.length)) != -1) 
    // here save the buffer to blobstore
}

データを blobstoreに保存するには、新しい Files API を使用して blobstore に保存する方法を参照してください。

于 2012-12-12T09:38:25.587 に答える