File Sharing API for Android SDK
Unsupported docs
PubNub no longer maintains Android SDK docs, but our Java SDK or Kotlin SDK are fully compatible with the Android platform and you can use them to build mobile apps, ensuring stable software development.
Use the Files API to upload and share files up to 5 MB on PubNub. Common use cases include social apps that share images and healthcare apps that share medical records.
When a file is uploaded on a channel
, it's stored and managed using a storage service, and associated with your key. Subscribers to that channel
receive a file event which contains a file ID
, filename
, and optional description
.
Send file
Upload a file or data to the specified channel
.
Method(s)
pubnub.sendFile()
.channel(String)
.fileName(String)
.inputStream(InputStream)
.cipherKey(String)
.ttl(Integer)
.shouldStore(Boolean)
.message(Object)
.meta(Object)
| Parameter | Type | Required | Default | Description |
| :-------- | :-------- | :-------- |: --- | :--- |
| channel
| String | Yes | n/a | Channel for the file. |
| fileName
| String | Yes | n/a | Name of the file to send. |
| inputStream
| InputStream | Yes | n/a | Input stream with file content. |
| cipherKey
| String | Optional | PNConfiguration#cipherKey
| Key used to encrypt uploaded data. If not provided, the cipherKey
in PNConfiguration
is used if configured. |
| ttl
| Integer | Optional | n/a | How long the message should be stored in the channel's storage. |
| shouldStore
| Boolean | Optional | true
| Whether to store the published file message
in the channel
history. |
| message
| Object | Optional | n/a | Message to send along with the file to the specified channel
. |
| meta
| Object | Optional | n/a | Metadata object that can be used with the filtering capability. |
For details on the method that publishes the file message, see Publish file message.
Sample code
pubnub.sendFile()
.channel("my_channel"
.fileName("cat_picture.jpg")
.inputStream(inputStream)
.cipherKey("my_cipher_key")
.message("Look at this photo!")
.async(new PNCallback<PNFileUploadResult>() {
@Override
public void onResponse(PNFileUploadResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("send timetoken: " + result.getTimetoken());
System.out.println("send status: " + result.getStatus());
System.out.println("send fileId: " + result.downloadFile().getId());
System.out.println("send fileName: " + result.downloadFile().getName());
}
show all 18 linesResponse
{
"timetoken": 15957709330808500,
"status": 200,
"file": {
"id": "d9515cb7-48a7-41a4-9284-f4bf331bc770",
"name": "cat_picture.jpg"
}
}
Returns
The sendFile()
operation returns a PNFileUploadResult
with the following properties:
Property Name | Type | Description |
---|---|---|
timetoken | Long | A representation of the timetoken when the message was published. |
status | Integer | Remote call return code. |
file | PNBaseFile | Uploaded file information. |
PNBaseFile
contains the following properties:
Property Name | Type | Description |
---|---|---|
id | Long | Id of the uploaded file. |
name | String | Name of the upload file. |
List channel files
Retrieve a list of files uploaded to a channel
.
Method(s)
pubnub.listFiles()
.channel(String)
.limit(Integer)
.next(String)
Parameter | Description |
---|---|
channel *Type: String Default: n/a | Channel to get list of files. |
limit Type: Integer Default: 100 | Number of files to return. Minimum value is 1, and maximum is 100. |
next Type: String Default: n/a | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
Sample code
pubnub.listFiles()
.channel("my_channel")
.async(new PNCallback<PNListFilesResult>() {
@Override
public void onResponse(PNListFilesResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("files status: " + result.getStatus());
System.out.println("files status: " + result.getNext());
System.out.println("files status: " + result.getCount());
System.out.println("files status: " + result.getCount());
for (PNUploadedFile file : result.getData()) {
System.out.println("files fileId: " + file.getId());
System.out.println("files fileName: " + file.getName());
System.out.println("files fileSize: " + file.getSize());
System.out.println("files fileCreated: " + file.getCreated());
show all 20 linesResponse
{
"data":[
{
"name":"cat_picture.jpg",
"id":"d9515cb7-48a7-41a4-9284-f4bf331bc770",
"size":25778,
"created":"202007 - 26T13:42:06Z"
}],
"status": 200
"totalCount": 1,
"next": null,
"prev": null
}
Returns
The listFiles()
operation returns a PNListFilesResult
with the following properties:
Property Name | Type | Description |
---|---|---|
timetoken | Long | A representation of the timetoken when the message was published. |
status | Integer | Remote call return code. |
next | String | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
count | Integer | Number of files returned. |
data | List | List of channel files. |
PNUploadedFile
contains the following properties:
Property Name | Type | Description |
---|---|---|
id | Long | ID of the uploaded file. |
name | String | Name of the uploaded file. |
size | Integer | Size of the uploaded file. |
created | String | Time of creation. |
Get file URL
Generate a URL that can be used to download a file from the target channel
.
Method(s)
pubnub.getFileUrl()
.channel(String)
.fileName(String)
.fileId(String)
Parameter | Description |
---|---|
channel *Type: String | Name of channel to which the file has been uploaded. |
fileName *Type: String | Name under which the uploaded file is stored. |
fileId *Type: String | Unique identifier for the file, assigned during upload. |
Sample code
pubnub.getFileUrl()
.channel("my_channel")
.fileName("cat_picture.jpg")
.fileId("d9515cb7-48a7-41a4-9284-f4bf331bc770")
.async(new PNCallback<PNFileUrlResult>() {
@Override
public void onResponse(PNFileUrlResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("getUrl fileUrl: " + result.getUrl());
}
System.out.println("getUrl status code: " + status.getStatusCode());
}
});
Response
{
"url":"http://ps.pndsn.com/v1/files/demo/channels/my_channel/files/d9515cb7-48a7-41a4-9284-f4bf331bc770/cat_picture.jpg?pnsdk=PubNub-Java-Unified/4.32.0×tamp=1595771548&uuid=pn-9ce9e988-8e04-40bf-90c4-ebe170478f7d"
}
Returns
The getFileUrl()
operation returns a PNFileUrlResult
with the following property:
Property Name | Type | Description |
---|---|---|
url | String | URL to be used to download the requested file. |
Download file
Download a file from the specified channel
.
Method(s)
pubnub.downloadFile()
.channel(String)
.fileName(String)
.fileId(String)
.cipherKey(String)
Parameter | Description |
---|---|
channel *Type: String | Name of channel to which the file has been uploaded. |
fileName *Type: String | Name under which the uploaded file is stored. |
fileId *Type: String | Unique identifier for the file, assigned during upload. |
cipherKey Type: String | Key used to decrypt downloaded data. If not provided, the SDK uses the CipherKey from the PNConfiguration . |
Sample code
pubnub.downloadFile()
.channel("my_channel")
.fileName("cat_picture.jpg")
.fileId("d9515cb7-48a7-41a4-9284-f4bf331bc770")
.cipherKey("my_cipher_key")
.async(new PNCallback<PNDownloadFileResult>() {
@Override
public void onResponse(PNDownloadFileResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("downloadFile fileName: " + result.getFileName());
System.out.println("downloadFile byteStream: " + result.getByteStream());
}
System.out.println("downloadFile status code: " + status.getStatusCode());
}
});
Response
{
"fileName": "cat_picture.jpg",
"byteStream": <file data>
}
Returns
The downloadFile()
operation returns a PNDownloadFileResult
with the following properties:
Property Name | Type | Description |
---|---|---|
fileName | String | Name of the downloaded file. |
byteStream | InputStream | Input stream containing all bytes of the downloaded file. |
Delete file
Delete a file from the specified channel
.
Method(s)
pubnub.deleteFile()
.channel(String)
.fileName(String)
.fileId(String)
Parameter | Description |
---|---|
channel *Type: String | The channel from which to delete the file. |
fileName *Type: String | Name of the file to be deleted. |
fileId *Type: String | Unique identifier of the file to be deleted. |
Sample code
pubnub.deleteFile()
.channel("my_channel")
.fileName("cat_picture.jpg")
.fileId("d9515cb7-48a7-41a4-9284-f4bf331bc770")
.async(new PNCallback<PNDeleteFileResult>() {
@Override
public void onResponse(PNDeleteFileResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("delete status code: " + result.getStatus());
}
System.out.println("delete status code: " + status.getStatusCode());
}
});
Response
{
"status": 200
}
Returns
The deleteFile()
operation returns a PNDeleteFileResult
with the following property:
Property Name | Type | Description |
---|---|---|
Status | Integer | Returns a status code. |
Publish file message
Publish file message from specified Channel
.
Method(s)
pubnub.publishFileMessage()
.channel(String)
.fileName(String)
.fileId(String)
.message(Object)
.meta(Object)
.shouldStore(Boolean)
Parameter | Description |
---|---|
channel *Type: String Default: n/a | Name of channel to publish file message. |
fileName *Type: String Default: n/a | Name of the file. |
fileId *Type: String Default: n/a | Unique identifier of the file. |
message Type: Object Default: n/a | The payload. |
meta Type: Object Default: n/a | Meta data object which can be used with the filtering ability. |
shouldStore Type: Boolean Default: true | Whether to store this message in history. Set to false to not store it. By default, messages are stored according to the retention policy set on your key. |
Sample code
pubnub.publishFileMessage()
.channel("my_channel")
.fileName("cat_picture.jpg")
.fileId("d9515cb7-48a7-41a4-9284-f4bf331bc770")
.message("This is a sample message")
.async(new PNCallback<PNFileUploadResult>() {
@Override
public void onResponse(PNFileUploadResult result, PNStatus status) {
if (!status.isError()) {
System.out.println("send timetoken: " + result.getTimetoken());
System.out.println("send status: " + result.getStatus());
System.out.println("send fileId: " + result.downloadFile().getId());
System.out.println("send fileName: " + result.downloadFile().getName());
}
System.out.println("send status code: " + status.getStatusCode());
show all 17 linesResponse
{
"timetoken": 15957709330808500,
"status": 200,
"file": {
"id": "d9515cb7-48a7-41a4-9284-f4bf331bc770",
"name": "cat_picture.jpg",
}
}
Returns
The sendFile()
operation returns a PNFileUploadResult
which contains the following properties:
Property Name | Type | Description |
---|---|---|
timetoken | Long | The timetoken at which the message was published. |
status | Integer | Remote call return code. |
file | PNBaseFile | Uploaded file information. |
PNBaseFile
contains the following properties:
Property Name | Type | Description |
---|---|---|
id | Long | Unique identifier of the uploaded file |
name | String | Name of the uploaded file |