Skip to content

File Upload

The file upload operation delivers a file in the Backendless file storage of your application. The return value of the upload operation is the public file URL. Backendless uses the following rules when assigning a URL to the uploaded file:

If no custom domains are mapped to the application, the URL has the following structure:
North American cluster:

https://backendlessappcontent.com/<application id>/<REST-API-key>/files/<path>/<file name>

European Union cluster:
https://eu.backendlessappcontent.com/<application id>/<REST-API-key>/files/<path>/<file name>

where:

Argument                Description
<application id> ID of the application which can be obtained from the Manage > App Settings screen of the Backendless Console
<REST-API-key> REST API key of your application. You can get the value from the Manage > App Settings section of the Backendless Console. Note that if the file is created from Cloud Code (JS, Java or Codeless), the API key in the file path will be the CodeRunner API Key.
<path> Directory path where the file is saved
<file name> Name of the file

If a custom domain is assigned to the application and the domain is selected for File Repo access, Backendless will use the custom domain to create a URL for the uploaded file. The File Repo access configuration is available in Backendless Console (Manage > App Settings > Custom Domains):
file-repo-access
When a custom domain is assigned to handle files in your Backendless backend, the structure of the URL is as follows:

https://your-custom-domain.com/api/files/<path>/<file name>

Note that your xxxx.backendless.app subdomain cannot be assigned to handle File Repo access. This means that Backendless server will never assign that subdomain to the files in your Backendless file repo.

The URL assigned to a file and returned as a result of the upload operation accounts for any security permissions assigned to the file (or the folder it is located in).

Java and Android

Non-Blocking API

Upload a file to a remote path in the Backendless storage.

// uploads a file to a remote directory in Backendless Hosting
public void Backendless.Files.upload( File file,
                                      String remotePath,
                                      AsyncCallback<BackendlessFile> responder )

// same as the method above, but with an option to overwrite a file if one exists with the same name
public void Backendless.Files.upload( File file,
                                      String remotePath,
                                      boolean overwrite,
                                      AsyncCallback<BackendlessFile> responder )

Upload a file to a remote path and receive updates for the status of the upload. Updates are represented as percentages and are delivered via the uploadCallback argument.

// uploads a file to a remote directory in Backendless Hosting.
public void Backendless.Files.upload( File file,
                                      String remotePath,
                                      UploadCallback uploadCallback,
                                      AsyncCallback<BackendlessFile> responder )

// same as the method above, but with an option to overwrite a file if one exists with the same name
public void Backendless.Files.upload( File file,
                                      String remotePath,
                                      boolean overwrite,
                                      UploadCallback uploadCallback,
                                      AsyncCallback<BackendlessFile> responder )

Blocking API

Upload a file to a remote path in the Backendless storage.

// uploads file to the specified path in the Backendless Hosting storage
public BackendlessFile Backendless.Files.upload( File file, 
                                                 String remotePath ) 
                                                          throws Exception

// same as the above, but provides an option to overwrite if 
// another file already exists with the same name
public BackendlessFile Backendless.Files.upload( File file, 
                                                 String remotePath, 
                                                 boolean overwrite ) 
                                                           throws Exception

Upload a file to a remote path and receive updates for the status of the upload. Updates are represented as percentages and are delivered via the uploadCallback argument.

// uploads file to a directory in Backendless Hosting. 
public BackendlessFile Backendless.Files.upload( File file,
                                                 String remotePath,
                                                 UploadCallback uploadCallback ) 
                                                          throws Exception

// same as the method above, but with an option to overwrite 
// the file if one exists with the same name
public BackendlessFile Backendless.Files.upload( File file,
                                                 String remotePath,
                                                 boolean overwrite,
                                                 UploadCallback uploadCallback ) 
                                                           throws Exception

Create a file in the remote Backendless file storage from the bytes provided by OutputStream.

// uploads data from output stream provided by the outputStreamRouter object to a remote
// directory in Backendless Hosting.
public BackendlessFile Backendless.Files.uploadFromStream( 
                                             IOutputStreamRouter outputStreamRouter,
                                             String remoteName,
                                             String remotePath ) throws Exception

// same as the method above, but with an option to overwrite 
// the file if one exists with the same name
public BackendlessFile Backendless.Files.uploadFromStream( 
                                             IOutputStreamRouter outputStreamRouter,
                                             String remoteName,
                                             String remotePath,
                                             boolean overwrite ) throws Exception

where:

Argument                Description
file Local file to upload to Backendless file storage. Remote file name is the same as the name of the local file.
remotePath Path (without file name) in the remote Backendless file storage where the file should be saved.
uploadCallback Receives updates through the upload process. Updates expressed as percentage of file uploaded to the server.
outputStreamRouter A wrapper around a java.io.ObjectStream object which provides the bytes for the upload.
remoteName Name of the file to save in the remote Backendless file storage.
responder A responder object which receives a callback when the method successfully uploads the file or if an error occurs. Applies  to the asynchronous methods only.

Android Only

Blocking API

Upload a bitmap image and save as a file in the remote Backendless storage.

// uploads an android bitmap to a remote directory in Backendless Hosting
public BackendlessFile Backendless.Files.Android.upload( 
                               android.graphics.Bitmap bitmap,
                               android.graphics.Bitmap.CompressFormat compressFormat,
                               int quality,
                               String remoteName,
                               String remotePath ) throws Exception

// same as the method above, but with an option to overwrite 
// the file if one exists with the same name
public BackendlessFile Backendless.Files.Android.upload( 
                               android.graphics.Bitmap bitmap,
                               android.graphics.Bitmap.CompressFormat compressFormat,
                               int quality,
                               String remoteName,
                               String remotePath,
                               boolean overwrite ) throws Exception

Non-Blocking API

Same as the method above, but the upload is handled asynchronously.

// uploads a bitmap and stores it in a file in remote directory in Backendless Hosting
public void Backendless.Files.Android.upload( 
                          android.graphics.Bitmap bitmap,
                          android.graphics.Bitmap.CompressFormat compressFormat,
                          int quality,
                          String remoteName,
                          String remotePath,
                          AsyncCallback<BackendlessFile> responder ) throws Exception

// same as the method above, but with an option to overwrite 
// the file if one exists with the same name
public void Backendless.Files.Android.upload( 
                          android.graphics.Bitmap bitmap,
                          android.graphics.Bitmap.CompressFormat compressFormat,
                          int quality,
                          String remoteName,
                          String remotePath,
                          AsyncCallback<BackendlessFile> responder ) throws Exception

where:

Argument                Description
bitmap Bitmap to upload to the remote Backendless storage and save as a file.
compressFormat Compress format to use when compressing the bitmap. The compression is done by the Bitmap.compress method.
quality Quality of the compression. The value is passed to the Bitmap.compress method, which handles the compression.
remoteName Name of the file to save in the remote Backendless file storage.
remotePath Path in the remote Backendless file storage where the file should be saved.
responder A responder object which receives a callback when the method successfully uploads the file or if an error occurs. Applies  to the asynchronous methods only

Return Value (sync methods only)

Argument                Description
BackendlessFile A wrapper around the URL assigned to the uploaded file.

Example

Bitmap photo = (Bitmap) getIntent().getExtras().get( "data" );

Backendless.Files.Android.upload( photo, 
                                  Bitmap.CompressFormat.PNG, 
                                  100, 
                                  "myphoto.png", 
                                  "mypics", 
                                  new AsyncCallback<BackendlessFile>()
{
 @Override
 public void handleResponse( final BackendlessFile backendlessFile )
 {
 }

 @Override
 public void handleFault( BackendlessFault backendlessFault )
 {
   Toast.makeText( UploadingActivity.this, 
                   backendlessFault.toString(), 
                   Toast.LENGTH_SHORT ).show();
 }
}

Codeless Reference

files_api_upload_file_1

where:

Argument                Description
source file URL A URL to the file that must be uploaded to the Backendless file storage. Note that you can use third-party cloud services URLs to upload files to the Backendless.
target file path Path in the remote Backendless file storage where the content should be stored.
overwrite The file is overwritten if the argument value is true and the file already exists. Otherwise, if the value is false and another file with the same name already exists, an error is returned.
return uploaded file URL When this box is checked, the operation returns a URL to the file saved to the Backendless file storage.

Returns the URL to the uploaded file.

For demonstration purposes, the example below downloads the file from the Dropbox and saves it to the /download folder in the Backendless file storage.

files_api_upload_file_2

The result of this operation will look as shown below after the Codeless logic runs. As you can see the operation has downloaded and saved the image to the /download folder.

files_api_upload_file_3