banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Android]解決HttpURLConnection上傳大文件時出現OOM問題

在進行 Android 開發時,通常會使用 HttpURLConnection 來進行文件上傳。然而,如果需要上傳較大的文件,就不建議使用 HttpURLConnection。如果在使用 HttpURLConnection 時編寫程式不當,可能會在上傳時遇到令人困擾的 OOM 問題。在 Android 開發中,如果需要上傳較大的文件,建議使用 Apache HttpComponents 的 HttpClient 組件來進行文件上傳處理。同時,這個組件還有專為 Android 設計的版本(HttpClient for Android)。具體用法如下:

  1. 下載並導入 HttpClient 組件,可以只下載 httpmime-4.1.1.jar,或直接下載 Android HttpClient 版的源代碼。

  2. 編寫一段簡單的上傳代碼,供參考:

String filePath = ""; // 設置文件路徑
String fileParam = ""; // 文件的請求參數
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
client.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "utf-8");
try {
MultipartEntity entity = new MultipartEntity();
File file = new File(filePath);
ContentBody fileBody = new FileBody (file); // 文件
entity.addPart(fileParam, fileBody);
httpPost.setEntity(entity);
HttpResponse response = client.execute(httpPost);
if (response.getStatusLine ().getStatusCode () == 200) { // 成功
//HttpEntity responseEntity = response.getEntity();
Log.i ("TAG", "成功");
} else {
Log.i ("TAG", "失敗");
}
} catch (Exception e) {
Log.e ("TAG", "異常");
}

最後附上 Apache HttpComponents 的下載地址:http://hc.apache.org/downloads.cgi

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。