最近写App时,发现上传大文件时不能直接把文件转为Byte[],必须要分块上传,不然必定报OOM异常,更头疼的是网上还没有资料。
分块代码如下:
long contentLength=0;//区块的长度-自己设置吧
RandomAccessFile raf_read = new RandomAccessFile(file, "r");
HttpURLConnection request = (HttpURLConnection) url.openConnection();
OutputStream outputStream = request.getOutputStream();
byte[] b = new byte[1024 * 4];
int len;
long writeBytes = 0;
while ((len = raf_read.read(b)) != -1) {
boolean overByte = false;
if (writeBytes >= contentLength) {
overByte = true;
len = (int) (contentLength - writeBytes);
}
outputStream.write(b, 0, len);
writeBytes += len;
if (overByte) break;
}
raf_read.close();
转载请注明出处