Content

Learn how to store and access files with QuickBlox file storage.

The content module allows storing rich chat attachments, app content, and settings without having to republish them. Using a web interface you or your clients can control and make instant changes to the apps.

Visit our Key Concepts page to get an overall understanding of the most important QuickBlox concepts.

Before you begin

  1. Register a QuickBlox account. This is a matter of a few minutes and you will be able to use this account to build your apps.
  2. Configure QuickBlox SDK for your app. Check out our Setup page for more details.
  3. Create a user session to be able to use QuickBlox functionality. See our Authentication page to learn how to do it.

Retrieve files

To retrieve the list of own files, you can use code below.

// for single QBFile
QBContent.getFile(file).performAsync(new QBEntityCallback<QBFile>() {
    @Override
    public void onSuccess(QBFile file, Bundle bundle) {
                
    }

    @Override
    public void onError(QBResponseException exception) {

    }
});
        
// or you can get a list of QBFiles:
QBPagedRequestBuilder requestBuilder = new QBPagedRequestBuilder();
requestBuilder.setPage(1);
requestBuilder.setPerPage(10);

QBContent.getFiles(requestBuilder).performAsync(new QBEntityCallback<ArrayList<QBFile>>() {
    @Override
    public void onSuccess(ArrayList<QBFile> files, Bundle bundle) {
                
    }

    @Override
    public void onError(QBResponseException exception) {

    }
});
// for single QBFile
QBContent.getFile(file).performAsync(object : QBEntityCallback<QBFile> {
    override fun onSuccess(file: QBFile?, bundle: Bundle?) {
                
    }

    override fun onError(exception: QBResponseException?) {
                
    }
})
  
// or you can get a list of QBFiles:
val requestBuilder = QBPagedRequestBuilder()
requestBuilder.page = 1
requestBuilder.perPage = 10
        
QBContent.getFiles(requestBuilder).performAsync(object : QBEntityCallback<ArrayList<QBFile>> {
    override fun onSuccess(files: ArrayList<QBFile>?, bundle: Bundle?) {
                
    }

    override fun onError(exception: QBResponseException?) {
                
    }
})

Upload file

You can upload a file to the cloud storage using the following code snippet.

File file = new File("pathname");
boolean publicAccess = false;
String tags = "dev, admin, birthday";

QBContent.uploadFileTask(file, publicAccess, tags, new QBProgressCallback() {
    @Override
    public void onProgressUpdate(int progress) {
        
    }
}).performAsync(new QBEntityCallback<QBFile>() {
    @Override
    public void onSuccess(QBFile file, Bundle bundle) {
        
    }

    @Override
    public void onError(QBResponseException exception) {
        
    }
});
val file: File = File("pathname")
val publicAccess: Boolean = false
val tags: String = "dev, admin, birthday"
          
QBContent.uploadFileTask(file, publicAccess, tags, object : QBProgressCallback {
    override fun onProgressUpdate(progress: Int) {
        
    }
}).performAsync(object : QBEntityCallback<QBFile> {
    override fun onSuccess(file: QBFile?, bundle: Bundle?) { 
        
    }

    override fun onError(exception: QBResponseException?) { 
        
    }
})
ArgumentRequiredDescription
fileyesFile in the local storage.
publicAccessyesFile visibility. If the file is public then it's possible to download it without a session token.
tagsyesComma-separated string with tags.
progressCallbacknoCallback to receive upload progress.

The maximum size of the uploaded file depends on the membership plan.

BasicStartupGrowthHIPAAEnterprise
File size limit10 Mb25 Mb50Mb50MbContact our sales team

Update file

It's also possible to update the file's data without creating a new content record.

File newFile = new File("pathname");
Integer fileId = file.getId();
String tags = "dev, admin, birthday";

QBContent.updateFileTask(newFile, fileId, tags, new QBProgressCallback() {
    @Override
    public void onProgressUpdate(int progress) {

    }
}).performAsync(new QBEntityCallback<QBFile>() {
    @Override
    public void onSuccess(QBFile file, Bundle bundle) {

    }

    @Override
    public void onError(QBResponseException exception) {

    }
});
val newFile: File = File("pathname")
val qbFileID: Int = file.id
val tags: String = "dev, admin, birthday"
        
QBContent.updateFileTask(newFile, fileID, tags, object : QBProgressCallback {
    override fun onProgressUpdate(progress: Int) {
                
    }
}).performAsync(object : QBEntityCallback<QBFile> {
    override fun onSuccess(file: QBFile?, bundle: Bundle?) {
                
    }

    override fun onError(exception: QBResponseException?) {
                
    }
})

Download file by UID

If the file is public then it's possible to download it without a session token.

String fileUID = file.getUid();
        
QBContent.downloadFile(fileUID).performAsync(new QBEntityCallback<InputStream>() {
    @Override
    public void onSuccess(InputStream inputStream, Bundle bundle) {
                
    }

    @Override
    public void onError(QBResponseException exception) {

    }
});
val fileUID: String = file.uid
        
QBContent.downloadFile(fileUID).performAsync(object : QBEntityCallback<InputStream> {
    override fun onSuccess(inputStream: InputStream?, bundle: Bundle?) {
                
    }

    override fun onError(exception: QBResponseException?) {
                
    }
})

Get file info

Get information about a file by ID using the getFile() method. This method allows to load the file description model from the server, not the content of the file itself.

int fileId = 8192;

QBContent.getFile(fileId).performAsync(new QBEntityCallback<QBFile>() {
    @Override
    public void onSuccess(QBFile file, Bundle bundle) {
        
    }

    @Override
    public void onError(QBResponseException exception) {
        
    }
});
val fileId = 8192

QBContent.getFile(fileId).performAsync(object : QBEntityCallback<QBFile> {
    override fun onSuccess(file: QBFile, bundle: Bundle) {
        
    }

    override fun onError(exception: QBResponseException?) {
        
    }
})
ArgumentRequiredDescription
fileIDyesID of the file.

Get file URL

Except for downloading, you can also get the URL of each QBFile. There are two types of file URLs that can be obtained: private and public.

  • Public URL allows anyone to access the file, no authorization token is needed.
  • Private URL can be accessed only by QuickBlox user with a session token.

Get public URL

To receive a public URL, use the code snippet below.

String publicUrl = QBFile.getPublicUrlForUID(fileUid);
val publicUrl = QBFile.getPublicUrlForUID(fileUid)
ArgumentRequiredDescription
fileUIDyesFile unique identifier. You can take the fileUid from the file using the getFile() method.

Get private URL

To get a private URL of the uploaded file, use the following code snippet.

String privateUrl = QBFile.getPrivateUrlForUID(fileUid);
val privateUrl = QBFile.getPrivateUrlForUID(fileUid)
ArgumentRequiredDescription
fileUidyesFile unique identifier. You can take the fileUid from the file using the getFile() method.

Delete file

Delete a file by file ID using the deleteFile() method below.

int fileId = 8192;
QBContent.deleteFile(fileId).performAsync(new QBEntityCallback<Void>() {
    @Override
    public void onSuccess(Void aVoid, Bundle bundle) {
        
    }

    @Override
    public void onError(QBResponseException exception) {
        
    }
});
val fileId = 8192
QBContent.deleteFile(fileID).performAsync(object : QBEntityCallback<Void> {
    override fun onSuccess(aVoid: Void, bundle: Bundle) {
      
    }

    override fun onError(exception: QBResponseException?) {
      
    }
})
ArgumentRequiredDescription
fileIDyesID of the file.

What’s Next