修改用户头像,上传到服务器
来源:互联网 发布:亿网域名怎么解析 编辑:程序博客网 时间:2024/05/01 06:16
每个应用都有这样的功能,在我的界面,需要修改用户头像(拍照,选择本地),将图片上传到服务器.
- 这就涉及到了好几个问题:
- 1.现在市面上好多手机已经是7.0系统,这里我们就要注意一些兼容处理,6.0动态权限,7.0文件安全
- 2.图片的上传,这里我使用okhttp
1.最好用的拍照Utils
- 这里我只粘贴操作的代码,具体的utils类大家可以去copy,后面我会说到
- 这里我还用到了ios风格的底部选择框
CropImageUtils.getInstance().openAlbum(this); //打开相册 CropImageUtils.getInstance().takePhoto(this); //拍照
@RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); CropImageUtils.getInstance().onActivityResult(mContext, requestCode, resultCode, data, new CropImageUtils.OnResultListener() { @Override public void takePhotoFinish(String path) { //拍照回调,去裁剪 CropImageUtils.getInstance().cropPicture(mContext, path); } @Override public void selectPictureFinish(String path) { //相册回调,去裁剪 CropImageUtils.getInstance().cropPicture(mContext, path); } @Override public void cropPictureFinish(String path) { LogUtils.d("path", path + " ....."); //TODO 上传图片 SpUtil.putString(mContext, GlobalVariables.USER_ICON_FILE_PATH, path); // upload(path); } }); }
/** * 上传图片到服务器 * * @param path */ private void upload(String path) { HashMap<String, Object> paramsMap = getMapParams(path); //TODO 1. 请求路径url String request_url = ""; MultipartBody.Builder builder = new MultipartBody.Builder(); //设置类型(表单上传) builder.setType(MultipartBody.FORM); //追加参数 for (String key : paramsMap.keySet()) { Object object = paramsMap.get(key); if (!(object instanceof File)) { builder.addFormDataPart(key, object.toString()); } else { File file = (File) object; builder.addFormDataPart(key, file.getName(), RequestBody.create(null, file)); } } //创建RequestBody RequestBody body = builder.build(); //创建Request final Request request = new Request.Builder().url(request_url).post(body).build(); //单独设置参数 比如读取超时时间 Call call = new OkHttpClient().newBuilder().writeTimeout(50, TimeUnit.SECONDS).build().newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { LogUtils.d("json", "上传失败"); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String string = response.body().string(); LogUtils.d("json", "上传图片成功: " + string); } else { LogUtils.d("json", "上传失败"); } } }); }
//TODO 2. 添加参数 private HashMap<String, Object> getMapParams(String path) { HashMap<String, Object> params = new HashMap<>(); //todo 这里根据接口自己改变参数 // params.put("uid", uid); // params.put("pwd", Encrypt.getMD5Str(pwd)); // params.put("bid", Constant.PRODUCT); // params.put("cp", Constant.OS); // params.put("cv", AndroidUtil.getVersionName(this)); // params.put("pkgname", this.getPackageName()); // params.put("imei", SystemUtil.getImei(this)); // params.put("imsi", SystemUtil.getImsi(this)); // params.put("netmode", SystemUtil.getNetworkName(this)); // params.put("ts", String.valueOf(System.currentTimeMillis() / 1000)); File file = new File(path); if (file != null) { params.put("pic", file); } return params; }
2.结束
- 上面只是粘贴了使用的部分代码,具体实现可以去看我上次的demo,可以完全用到你到项目中.
- 地址: https://github.com/hh-pan/UserInfoSetting
阅读全文
0 0
- 修改用户头像,上传到服务器
- // 上传头像到服务器
- 上传头像到服务器
- 用户上传用户头像至服务器
- iOS 用户头像选择以及上传服务器
- Thinkphp头像上传到用户文件下
- Android 开发 上传用户头像到服务器的数据库再获取显示
- Android 开发 上传用户头像到服务器的数据库再获取显示
- Android 测试上传头像到服务器
- iOS上传图片或者头像到服务器。
- iOS开发:上传头像到服务器
- Android 上传头像(文件)到服务器
- 关于上传头像到服务器的问题
- 调用系统相册上传头像到服务器
- Android裁剪头像上传到远程服务器
- Android之修改用户头像并上传服务器(实现手机拍照和SD卡选择上传)
- Swift 头像上传(4)Alamofire上传图片到服务器
- dedecms用户上传头像大小限制简单修改
- Linux 内存空间
- NYOJ 1159 小猴子下落
- java调试技巧
- 重装openCV3.2遇到的一些问题
- 退出所有的activity
- 修改用户头像,上传到服务器
- pycharm激活
- vue-mixins使用注意事项和高级用法
- CAS学习记录2--CAS Server的改造
- intellij 中给module导入jar包
- Android App 架构设计
- HttpURLConnection中getInputStream()报异常
- 居然嘲笑我们没有Excel的这个功能,呵呵
- LintCode A+b问题