📅  最后修改于: 2023-12-03 15:09:06.928000             🧑  作者: Mango
在某些应用程序中,我们需要让用户上传图像以完成某些操作。本文将介绍如何从 android 应用程序上传图像至服务器。 我们将使用 Java 编程语言和 Apache HttpClient 库。
添加 Apache HttpClient 依赖
dependencies {
implementation 'org.apache.httpcomponents:httpclient:4.5.5'
}
由于 HttpClient 在 Android SDK 23+ 中已经不再提供所以我们需要添加以下代码配置:
android {
useLibrary 'org.apache.http.legacy'
}
在 Android 清单文件中添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
创建一个方法,将图像转换为 Base64 编码
private String encodeImage(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm为Bitmap实例
byte[] b = baos.toByteArray();
return Base64.encodeToString(b, Base64.DEFAULT);
}
创建一个方法,将图像上传至服务器
private void uploadImageToServer(Bitmap bitmap) throws Exception {
String encodedImage = encodeImage(bitmap);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("image", encodedImage));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://example.com/upload_image.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");
Log.d("Response", responseString);
}
在上面的代码中,我们将图像转换为 Base64 编码,并将其添加到名称值对列表中。然后我们使用 HttpClient 来发送 POST 请求并上传图像。最后,我们使用 HttpEntityUtils 将响应实体转换为字符串。
本文介绍了如何将图像从 android 应用程序上传至服务器。这是处理图像上传时的常用技巧之一。我们使用了 Java 编程语言和 Apache HttpClient 库来实现上述过程。