![](/img/trans.png)
[英]Not sure how to create large arrays without OutOfMemory Android
[英]How to upload large files from Android without OutOfMemory Error?
我需要将至少16个Mb文件从Android上传到我的服务器,但是当文件超过9 Mb时会转到下一个错误 - >
10-17 05:21:57.600: E/AndroidRuntime(2185): java.lang.OutOfMemoryError
10-17 05:21:57.600: E/AndroidRuntime(2185): at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)
10-17 05:21:57.600: E/AndroidRuntime(2185): at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)
10-17 05:21:57.600: E/AndroidRuntime(2185): at libcore.net.http.RetryableOutputStream.write(RetryableOutputStream.java:61)
10-17 05:21:57.600: E/AndroidRuntime(2185): at java.io.DataOutputStream.write(DataOutputStream.java:98)
这是我可以发布整个代码的代码的一部分,如果它是必要的
String fileName = sourceFileUri;
HttpURLConnection conn = null;
DataOutputStream dos = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 1024 * 1024;
File sourceFile = new File(sourceFileUri);
谢谢
大卫
也许您可以启用流式传输模式,以避免在发送之前将上传的文件完全复制到手机的内存中。
// set the request mode as POST
urlConnection.setRequestMethod("POST");
// disable using cache.
urlConnection.setUseCaches(false);
// enable Output/Input.
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
// enable the streaming mode.
urlConnection.setChunkedStreamingMode(128 * 1024);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.