IM 即时通讯 (442)
Android (209)
- 初始化&链接 (8)
- 事件&监听处理 (7)
- 用户信息 (13)
- 会话列表 (16)
- 聊天会话 (26)
- 消息处理 (35)
- 自定义消息 (6)
- 音视频 (2)
- 推送&通知 (34)
- 扩展功能 (4)
- 第三方地图 (3)
- 依赖&配置 (9)
- 升级说明 (3)
- 其他 (43)
iOS (168)
- SDK 导入 (10)
- 连接 (8)
- 事件处理 (2)
- 用户信息 (3)
- 会话列表 (14)
- 聊天会话 (44)
- 消息处理 (26)
- 自定义消息 (8)
- 推送&通知 (19)
- 扩展功能 (5)
- 国际化 (4)
- 音视频 (3)
- 其他 (22)
Web (36)
Server (29)
发送图片到自己的服务器
发送图片到自己的服务器
发布时间: 2018-03-22 19:59
回答:
开发者客户以将图片发送到自己的服务器,具体步骤如下:
第一步:继承ConversationFragment,重写onImageResult,在这个方法里面获取到所选择的图片的URL集合
第二步:构造消息实例
ImageMessage imageMessage = ImageMessage.obtain(thumbPathUri, localPathUri); Message message = Message.obtain(targetId, conversationType, imageMessage);
第三步:发送图片:
/** * <p>发送图片消息,可以使用该方法将图片上传到自己的服务器发送,同时更新图片状态。</p> * <p>使用该方法在上传图片时,会回调 {@link io.rong.imlib.RongIMClient.SendImageMessageWithUploadListenerCallback} * 此回调中会携带 {@link RongIMClient.UploadImageStatusListener} 对象,使用者只需要调用其中的 * {@link RongIMClient.UploadImageStatusListener#update(int)} 更新进度 * {@link RongIMClient.UploadImageStatusListener#success(Uri)} 更新成功状态,并告知上传成功后的图片地址 * {@link RongIMClient.UploadImageStatusListener#error()} 更新失败状态 </p> * * @param message 发送消息的实体。 * @param pushContent 当下发 push 消息时,在通知栏里会显示这个字段。 * 如果发送的是自定义消息,该字段必须填写,否则无法收到 push 消息。 * 如果发送 sdk 中默认的消息类型,例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg,则不需要填写,默认已经指定。 * @param pushData push 附加信息。如果设置该字段,用户在收到 push 消息时,能通过 {@link io.rong.push.notification.PushNotificationMessage#getPushData()} 方法获取。 * @param callback 发送消息的回调,回调中携带 {@link RongIMClient.UploadImageStatusListener} 对象,用户调用该对象中的方法更新状态。 * {@link #sendImageMessage(Message, String, String, RongIMClient.SendImageMessageCallback)} */ RongIM.getInstance().sendImageMessage(message, pushContent, pushData, new RongIMClient.SendImageMessageWithUploadListenerCallback() { @Override public void onAttached(Message message, final RongIMClient.UploadImageStatusListener uploadImageStatusListener) { /*上传图片到自己的服务器*/ uploadImg(imgMsg.getPicFilePath(), new UploadListener() { @Override public void onSuccess(String url) { // 上传成功,回调 SDK 的 success 方法,传递回图片的远端地址 uploadImageStatusListener.success(Uri.parse(url)); } @Override public void onProgress(float progress) { //刷新上传进度 uploadImageStatusListener.update((int) progress); } @Override public void onFail() { // 上传图片失败,回调 error 方法。 uploadImageStatusListener.error(); } }); } @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { //发送失败 } @Override public void onSuccess(Message message) { //发送成功 } @Override public void onProgress(Message message, int progress) { //发送进度 } });
注意:SDK没有发送网络的图片接口,因为发送图片需要携带缩略图,如果不是本地图片,就没有办法得到缩略图。