Java 如何在通过JSP上传文件时从Servlet中的流创建块
我必须上传文件,并将该文件作为块写入云存储Java 如何在通过JSP上传文件时从Servlet中的流创建块,java,google-app-engine,apache-commons-fileupload,Java,Google App Engine,Apache Commons Fileupload,我必须上传文件,并将该文件作为块写入云存储 以下是JSP中的上载文件代码: <form action="/myservlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" title="File"/> <input type="submit" value="Submit"/> </form> 我必须在servlet中创
- 以下是JSP中的上载文件代码:
<form action="/myservlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" title="File"/> <input type="submit" value="Submit"/> </form>
在读取时,是否有方法从上述inputstream创建块?从流中读取所需长度的块。继续读取,直到没有更多可用字节:
static final int CHUNK_LENGTH = 1000000;
void readChunks(InputStream input) throws IOException {
byte chunk[] = new byte[CHUNK_LENGTH];
int length;
do {
length = IOUtils.read(input, chunk);
if (length>0) {
//if the total length is multiple of CHUNK_LENGTH
//the last chunk will be empty
doSomethingWith(chunk, length);
}
} while (length==CHUNK_LENGTH);
}
这里的IOUtils.read
是一个来自的实用函数,它读取尽可能多的字节并返回实际读取的长度(如果达到EOF,则可能小于请求的长度)
从流中读取所需长度的块。继续读取,直到没有更多可用字节:
static final int CHUNK_LENGTH = 1000000;
void readChunks(InputStream input) throws IOException {
byte chunk[] = new byte[CHUNK_LENGTH];
int length;
do {
length = IOUtils.read(input, chunk);
if (length>0) {
//if the total length is multiple of CHUNK_LENGTH
//the last chunk will be empty
doSomethingWith(chunk, length);
}
} while (length==CHUNK_LENGTH);
}
这里的IOUtils.read
是一个来自的实用函数,它读取尽可能多的字节并返回实际读取的长度(如果达到EOF,则可能小于请求的长度)
int read(final InputStream input, final byte[] buffer) throws IOException {
int length = buffer.length;
int remaining = length;
while (remaining > 0) {
final int location = length - remaining;
final int count = input.read(buffer, location, remaining);
if (EOF == count) { // EOF
break;
}
remaining -= count;
}
return length - remaining;
}