1
我試圖上傳一個大的文件〜10 MB在服務器上,並意識到在2.3.4上流首先寫入內存寫入服務器,我通過查看堆內存轉儲來確認此行爲,因爲這對於大文件會導致OutOfMemory異常。我在4.2設備上看不到相同的行爲。安卓HttpsURLConnection在2.3.4 OutOfMemoryError而上傳大文件(字節[]在內存中)
以下是我使用的代碼:
URL url = new URL(uri);
connection = (HttpsURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
connection.setRequestProperty("content-type", "");
connection.setRequestProperty("Accept-Encoding", "");
connection.setFixedLengthStreamingMode((int)totalBytes);
out = new BufferedOutputStream(connection.getOutputStream());
fis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[32 * 1024];
int bytesRead = 0;
int totalBytesRead = 0;
while ((bytesRead = fis.read(buffer)) != -1)
{
totalBytesRead = totalBytesRead + bytesRead;
out.write(buffer, 0, bytesRead);// OOM Error
}
out.flush();