загрузить файл (изображение) в пользовательский объект quickblox

Как загрузить файл (изображение), который у меня есть его Uri, в пользовательский объект?

Я пробовал это:

   public void onClick(View v) {

            HashMap<String, Object> fields = new HashMap<String, Object>();

            File newImage = new File(imageUri.toString());
            fields.put("image", newImage);
            fields.put("bla", "bla");


            QBCustomObject qbCustomObject = new QBCustomObject();
            qbCustomObject.setClassName("imageClass");  // your Class name
            qbCustomObject.setFields(fields);
            QBCustomObjects.createObject(qbCustomObject, new QBCallbackImpl() {
                @Override
                public void onComplete(Result result) {
                    if (result.isSuccess()) {
                        QBCustomObjectResult qbCustomObjectResult = (QBCustomObjectResult) result;
                        QBCustomObject qbCustomObject = qbCustomObjectResult.getCustomObject();
                       // Log.d("New record: ",newCustomObject.toString());
                    } else {
                        Log.e("Errors",result.getErrors().toString());
                    }
                }
            });

И я получаю только строку ("bla"), а изображение получаю - null

Спасибо


person Cohelad    schedule 28.12.2013    source источник


Ответы (1)


В настоящее время эта функция находится в стадии разработки. Будет в мастере через пару дней

Но вы уже можете его использовать — загрузите SDK из ветки разработки https://github.com/QuickBlox/quickblox-android-sdk/tree/development

Вот много фрагментов, особенно для модуля Custom Objects

https://github.com/QuickBlox/quickblox-android-sdk/blob/development/snippets/src/com/quickblox/snippets/modules/SnippetsCustomObjects.java

Загрузить файл

QBCustomObject qbCustomObject = new QBCustomObject(CLASS_NAME, NOTE1_ID);
QBCustomObjectsFiles.uploadFile(file1, qbCustomObject, AVATAR_FIELD, new QBCallbackImpl() {
    @Override
    public void onComplete(Result result) {
        if (result.isSuccess()) {
            QBCustomObjectFileField customObjectFileField = ((QBCOFileUploadResult) result).getCustomObjectFileField();
            Log.i(TAG, ">>>upload response:" + customObjectFileField.getFileName() + " " + customObjectFileField.getFileId() + " " +
                                customObjectFileField.getContentType());
        } else {
            handleErrors(result);
        }
   }
});

Скачать файл

QBCustomObject qbCustomObject = new QBCustomObject(CLASS_NAME, NOTE1_ID);
QBCustomObjectsFiles.downloadFile(qbCustomObject, AVATAR_FIELD, new QBCallbackImpl() {
    @Override
    public void onComplete(Result result) {
        QBFileDownloadResult downloadResult = (QBFileDownloadResult) result;
        if (result.isSuccess()) {
            byte[] content = downloadResult.getContent();       // that's downloaded file content
            InputStream is = downloadResult.getContentStream(); // that's downloaded file content
            Log.i(TAG, ">>> file downloaded successfully" + getContentFromFile(is));
            if(is!=null){
                try{
                    is.close();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
       } else {
           handleErrors(result);
       }
    }
});

Удалить файл

QBCustomObject qbCustomObject = new QBCustomObject(CLASS_NAME, NOTE1_ID);
QBCustomObjectsFiles.deleteFile(qbCustomObject, AVATAR_FIELD, new QBCallbackImpl() {
    @Override
    public void onComplete(Result result) {
        if (result.isSuccess()) {
            Log.i(TAG, ">>> file deleted successfully");
        } else {
            handleErrors(result);
        }
    }
});
person Rubycon    schedule 29.12.2013
comment
Большое спасибо за помощь, я попробую это с уже созданным NOTE_ID, но как мне получить NOTE1_ID, который я только что создал? - person Cohelad; 30.12.2013
comment
Вы получите его после создания записи в ответ QBCustomObjectResult customObjectResult = (QBCustomObjectResult) result; QBCustomObject newCustomObject = customObjectResult.getCustomObject(); новыйПользовательскийОбъект.getID(); - person Rubycon; 30.12.2013
comment
Есть ли способ загрузить файл в пользовательский объект без отдельного вызова для предварительного создания объекта? - person kabuto178; 06.06.2016
comment
@ kabuto178 нет, для этой цели вы можете использовать Контент - person Rubycon; 08.06.2016