头像上传实现总结

工具类

 

public class AddLogin {
    //上传图片
    public void uploadPic(File fileCropUri) {
        //创建OkHttpClient请求对象

        OkHttpClient okHttpClient = new OkHttpClient();
        //创建RequestBody 封装file参数
        RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), fileCropUri);
        //创建RequestBody 设置类型等
        RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("head", fileCropUri.getName(), fileBody).build();
        //创建Request
        Request request = new Request.Builder().url(ConstantURL.IP_url+"/home/Apivideo/putHeadimg&uid=1826").post(requestBody).build();

        //得到Call
        okhttp3.Call call = okHttpClient.newCall(request);
        //执行请求
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("失败", "onResponse: 很不高兴");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d("成功", "onResponse: 开心");
            }
        });

    }
}

 

 

 

//不管是相机还是相册的回调

 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    switch (requestCode) {
        case CAMERA_REQUEST_CODE:   //调用相机后返回
            if (resultCode == RESULT_OK) {
                //用相机返回的照片去调用剪裁也需要对Uri进行处理
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    Uri contentUri = FileProvider.getUriForFile(MyActivity.this, "com.hansion.chosehead", tempFile);
                    cropPhoto(contentUri);
                } else {
                    Log.i(" ","+tempFile:"+tempFile);
                    cropPhoto(Uri.fromFile(tempFile));
                }
            }
            break;
        case ALBUM_REQUEST_CODE:    //调用相册后返回
            if (resultCode == RESULT_OK) {

            Log.d("TAG","走剪切");
                Uri uri = intent.getData();
                cropPhoto(uri);
            }
            break;
        case CROP_REQUEST_CODE:     //调用剪裁后返回
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                //在这里获得了剪裁后的Bitmap对象,可以用于上传
                Bitmap image = bundle.getParcelable("data");
                //设置到ImageView上
                fi.setImageBitmap(image);
                //也可以进行一些保存、压缩等操作后上传
                File file = saveImage("crop", image);

                 //这里是调用上传

                AddLog addLog = new AddLog();
                addLog.uploadPic(file);

            }
            break;
    }
}
//保存、压缩等操作后上传
public File saveImage(String name, Bitmap bmp) {
    File appDir = new File(Environment.getExternalStorageDirectory().getPath());
    if (!appDir.exists()) {
        appDir.mkdir();
    }
    String fileName = name + ".jpg";
    File file = new File(appDir, fileName);
    try {
        FileOutputStream fos = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
        return file;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想不上班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值