当前知识库站点已不再维护。请移步新版知识库:https://help.rongcloud.cn/

发送图片到自己的服务器

发送图片到自己的服务器
发布时间: 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没有发送网络的图片接口,因为发送图片需要携带缩略图,如果不是本地图片,就没有办法得到缩略图。