最近写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();
转载请注明出处
大文件分块上传实战
本文分享了在App开发过程中遇到的大文件上传解决方案。当直接将文件转换为Byte[]会导致OOM异常时,采用分块上传的方法可以有效避免这一问题。文章提供了具体的实现代码,包括如何设置区块长度、读取文件、发送请求等。
577

被折叠的 条评论
为什么被折叠?



