我正在使用Apache Commons FileUpload库来上传文件。我想将InputStream的内容复制到单个字节数组中。我怎么能这样做?
try {
List<FileItem> items = new ServletFileUpload(
new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// Process regular form field (input
// type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
out.println("returned");
} else {
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = FilenameUtils.getName(item.getName());
InputStream input = item.getInputStream();
if (fieldname.equals("file")) {
// please help me here.
byte[] allbyte = ???
}
}
}
}
答案 0 :(得分:2)
使用IOUtils.toByteArray()
库中的Apache commons-io实用程序方法:
import org.apache.commons.io.IOUtils;
InputStream input;
byte[] bytes = IOUtils.toByteArray(input);
它给你一个单行。一般来说,尝试找到一个符合你想要的现有库,Apache commons libraries有大量方便的方法。
答案 1 :(得分:0)
如何使用ByteArrayOutputStream
?
ByteArrayOutputStream out = new ByteArrayOutputStream();
int b = input.read();
while (b != -1) {
out.write(b);
b = input.read();
}
allbyte = out.toByteArray();
答案 2 :(得分:-1)
使用DataInputStream。它有一个readFully()方法,可以读取所有字节。
DataInputStream dis = new DataInputStream(inputStream);
byte[] allBytes = new byte[inputStream.available()];
dis.readFully(allBytes);
详情请见