我正在研究android中的quickblox消息附件功能。
我要做的是:OnViewClicked
一个CreateChooser(type:images/*)
将会公开。
选择图像后,它将转换为存储onActivityResult
的{{1}}方法。
发布正在调用Uri
函数。
这是我的编码部分:
sendAttachment
LOGCAT错误:
E / ERROR:文件上传onError,文件不存在,Passed对象不是文件,内容类型不正确
答案 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()
。