quickbloxsdk:Passed对象不是文件,内容类型不正确?

时间:2017-01-04 12:20:52

标签: java android android-intent quickblox

我正在研究android中的quickblox消息附件功能。

我要做的是:OnViewClicked一个CreateChooser(type:images/*)将会公开。 选择图像后,它将转换为存储onActivityResult的{​​{1}}方法。 发布正在调用Uri函数。

这是我的编码部分:

sendAttachment

LOGCAT错误:

  

E / ERROR:文件上传onError,文件不存在,Passed对象不是文件,内容类型不正确

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。

每当您尝试添加物理设备上不存在的文件时,就会显示此类错误。

要解决此问题,我只需下载新文件&我的代码有魅力。

答案 1 :(得分:0)

尝试以下代码。我可以上传图片,视频和音频

public void uploadAttachment(final File file, final int fileType) {

    String tags = CollectionsUtils.getMimeType(Uri.fromFile(file));
    ChatHelper.getInstance().loadFileAsAttachment(file,  tags, new QBEntityCallback<QBAttachment>() {
        @Override
        public void onSuccess(QBAttachment result, Bundle params) {
            fileUploadProgressMap.remove(item);
            result.setType(String.valueOf(fileType));
            fileQBAttachmentMap.put(item, result);
            notifyDataSetChanged();
        }

        @Override
        public void onError(QBResponseException e) {
            onAttachmentUploadErrorListener.onAttachmentUploadError(e);
            remove(item);
        }
    }, new QBProgressCallback() {
        @Override
        public void onProgressUpdate(final int progress) {
            fileUploadProgressMap.put(item, progress);
            mainThreadHandler.post(new Runnable() {
                @Override
                public void run() {
                    notifyDataSetChanged();
                }
            });
        }
    });
}


 public void loadFileAsAttachment(File file, String tags, QBEntityCallback<QBAttachment> callback,
                                 QBProgressCallback progressCallback) {
    QBContent.uploadFileTask(file, true, tags, progressCallback)
            .performAsync(new QbEntityCallbackTwoTypeWrapper<QBFile, QBAttachment>(callback) {
                @Override
                public void onSuccess(QBFile qbFile, Bundle bundle) {
                    QBAttachment attachment = new QBAttachment(QBAttachment.PHOTO_TYPE);
                    attachment.setId(qbFile.getId().toString());
                    attachment.setUrl(qbFile.getPublicUrl());
                    callback.onSuccess(attachment, bundle);
                }
            });
}

答案 2 :(得分:0)

而是使用uri.getPath()获取文件,请使用uri.getLastPathSegment()