2

以下に示すコードを使用して、mutlipartファイルをGoogleAppEngineにアップロードしています。Apache Commonsの助けを借りて、ファイルアップローダーはファイルをGoogleAppEngineに正常にアップロードしています。ファイルサイズが0バイトかどうかを検証したい。これを行うために、Google AppEngineとApacheCommonsファイルアップローダーを確認してファイルサイズを確認しましたが、失敗しました。ファイルサイズを見つける方法はありますか?親切に私にアイデアを提案してください。

私のサーブレット

ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter;
iter = upload.getItemIterator(request);
while (iter.hasNext()) {
item = iter.next();
String fileName =  item.getName();
String fieldName = item.getFieldName();
if (item.isFormField()) {
String fieldValue = Streams.asString(item.openStream());
}
InputStream is1 = item.openStream();
try {
FileService fileService = FileServiceFactory.getFileService();
AppEngineFile file = fileService.createNewBlobFile(mime, fileName);
boolean lock = true;
 FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
 byte[] b1 = new byte[BUFFER_SIZE];
int readBytes1;
while ((readBytes1 = is1.read(b1)) != -1) {
 writeChannel.write(ByteBuffer.wrap(b1, 0, readBytes1));
}
writeChannel.closeFinally();
4

1 に答える 1

1

is1入力ストリーム全体をバイトバッファに読み込み、その長さを確認する必要があります。このスニペットを使用できます:

public static byte[] getBytes(InputStream is) throws IOException {
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();

    int len;
    byte[] data = new byte[10000];
    while ((len = is.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, len);
    }

    buffer.flush();
    return buffer.toByteArray();
}
于 2013-02-02T18:50:54.373 に答える