/*
实现思路
1.将要上传的图片转为 Bitmap 类型
2.将Bitmap类型的图片编译成 Base64 的字节流
3.通过 Volley 的post方法上传上去
*/
// 实现第一步 将存储卡中的文件转为Bitmap 类型
FileInputStream fis = new FileInputStream("图片的路径");
Bitmap bitmap = BitmapFactory.decodeStream(fis);
// 实现第二步 Bitmap 转 Base64 的字节流
public static String bitmapToBase64(Bitmap bitmap) {
String result = null; ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush(); baos.close(); byte[] bitmapBytes = baos.toByteArray();
result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush(); baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
// 然后使用上一个博客提到的Volley post上传参数一样上传上去就好了
String user_img =bitmapToBase64(bitmap);
requestQueue = Volley.newRequestQueue(this);
stringRequest = new StringRequest(Request.Method.POST, "请求地址", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// 返回的json参数 response
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// 请求错误就会进入这里
} }) {
//////////////// 在这里可以获取Cookie或者是设置Cookie
// 像服务器post提交参数的方法
@Override
protected Map<String, String> getParams() {
// 在这里设置需要post的参数
HashMap<String, String> map = new HashMap<String, String>();
map.put("user_img", user_img); return map;
}
};
requestQueue.add(stringRequest);