Go V4 Files API Reference for Realtime Apps
Allows users to upload and share files. You can upload any file of up to 5 MB in size. This feature is commonly used in social apps to share images, or in medical apps to share medical records for patients.
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
Description
Upload file / data to specified channel
.
Method(s)
pn.SendFile().Channel(string).Message(string).CipherKey(string).Name(string).File(*os.File).TTL(int).ShouldStore(bool).Meta(interface{}).Execute()
Parameter Type Required Defaults Description Channel
string Yes Channel to upload the file. Message
string No Message which should be sent along with file to specified channel
.File
*os.File Yes Pointer to the File object CipherKey
string No Key to be used to encrypt uploaded data. If is it not provided the CipherKey from the PNConfiguration will be used, if available. TTL
int No How long message should be stored in channel's storage. ShouldStore
bool No true
If true
the published file message will be stored in channel's history.Meta
interface{} No null Meta data object which can be used with the filtering ability
Basic Usage
file, err := os.Open("cat_picture.jpg")
defer file.Close()
if err != nil {
panic(err)
}
resSendFile, statusSendFile, errSendFile := pn.SendFile().Channel("my_channel").Message("Look at this photo!").Name("cat_picture.jpg").File(file).Execute()
fmt.Println(resSendFile, statusSendFile, errSendFile)
fmt.Println(resSendFile.Data.ID)
Returns
The SendFile()
operation returns a type PNSendFileResponse
which contains the following properties:
Property Name | Type | Description |
---|---|---|
Data | PNFileData | Details of type PNFileData are here |
Timestamp | int64 | Returns an int64 representation of the timetoken when the message was published. |
PNFileData
PNFileData
contains the following properties:
Property Name | Type | Description |
---|---|---|
ID | string | Returns the ID of the file. |
List channel files
Description
Retrieve list of files uploaded to Channel
.
Method(s)
pn.ListFiles().Channel(string).Limit(int).Next(string).Execute()
Parameter Type Required Defaults Description Channel
string Yes Channel
to get list of files.Limit
int Optional 100 Number of files to return. Next
string Optional Previously-returned cursor bookmark for fetching the next page.
Basic Usage
resListFile, statusListFile, errListFile := pn.ListFiles().Channel("my_channel").Execute()
fmt.Println(resListFile, statusListFile, errListFile)
if resListFile != nil {
for _, m := range resListFile.Data {
fmt.Println(m.ID, m.Created, m.Name, m.Size)
}
}
Returns
The ListFiles()
operation returns a type PNListFilesResponse
which contains the following properties:
Property Name | Type | Description |
---|---|---|
Data | PNFileInfo | Details of type PNFileData are here |
Count | int | Number of files returned. |
Next | string | Cursor bookmark for fetching the next page. |
PNFileInfo
PNFileInfo
contains the following properties:
Property Name | Type | Description |
---|---|---|
Name | string | Name of the file. |
Id | string | ID of the file. |
Size | int | Size of the file. |
Created | string | Created date of the file. |
Get File Url
Description
Generate URL which can be used to download file from target Channel
.
Method(s)
pn.GetFileURL().Channel(string).ID(string).Name(string).Execute()
Parameter Type Required Description Channel
string Yes Name of channel
within whichfile
withname
has been uploaded.ID
string Yes Unique file identifier
which has been assigned during file upload.Name
string Yes Name under which the uploaded file
is stored for thechannel
.
Basic Usage
resGetFile, statusGetFile, errGetFile := pn.GetFileURL().Channel("my_channel").ID("d9515cb7-48a7-41a4-9284-f4bf331bc770").Name("cat_picture.jpg").Execute()
fmt.Println(resGetFile, statusGetFile, errGetFile)
fmt.Println(resGetFile.URL)
Returns
The GetFileUrl()
operation returns a type PNGetFileURLResponse
which contains the following properties:
Property Name | Type | Description |
---|---|---|
Url | string | URL which can be used to download remote file with specified name and identifier . |
Download file
Description
Download file from specified Channel
.
Method(s)
pn.DownloadFile().Channel(string).CipherKey(string).ID(string).Name(string).Execute()
Parameter Type Required Description Channel
string Yes Name of channel
within whichfile
withname
has been uploaded.ID
string Yes Unique file
identifier which has been assigned duringfile
upload.Name
string Yes Name under which uploaded file
is stored forchannel
.CipherKey
string Optional Key which should be used to decrypt downloaded data. If CipherKey is not provided, SDK uses CipherKey of PNConfiguration
.
Basic Usage
resDLFile, statusDLFile, errDLFile := pn.DownloadFile().Channel("my_channel").ID("d9515cb7-48a7-41a4-9284-f4bf331bc770").Name("cat_picture.jpg").Execute()
if resDLFile != nil {
filepathOutput := "cat_picture.jpg"
out, _ := os.Create(filepathOutput)
_, err := io.Copy(out, resDLFile.File)
if err != nil {
fmt.Println(err)
}
}
Returns
The DownloadFile()
operation returns a type PNDownloadFileResponse
which contains the following properties:
Property Name | Type | Description |
---|---|---|
File | io.Reader | File Reader that can be used to save the File . |
Delete file
Description
Delete file from specified Channel
.
Method(s)
pn.DeleteFile().Channel(string).ID(string).Name(string).Execute()
Parameter Type Required Description Channel
string Yes Name of channel
within whichfile
withname
needs to be deleted.ID
string Yes Unique file
identifier of thefile
to be deleted.Name
string Yes Name of the file
to be deleted from thechannel
.
Basic Usage
_, statusDelFile, errDelFile := pn.DeleteFile().Channel("my_channel").ID("d9515cb7-48a7-41a4-9284-f4bf331bc770").Name("cat_picture.jpg").Execute()
fmt.Println(statusDelFile, errDelFile)
Returns
The DeleteFile()
operation returns a type PNDeleteFileResponse
which is nil
.
Publish file message
Description
Publish file message from specified Channel
.
Method(s)
pn.PublishFileMessage().TTL(int).Meta(interface{}).ShouldStore(bool).Channel(string).Message(PNPublishFileMessage).Execute()
Parameter Type Required Defaults Description TTL
int Optional How long message should be stored in channel's storage. Meta
interface{} Optional Meta data object which can be used with the filtering ability. ShouldStore
bool Optional true
Store in history
.Channel
string Yes Name of channel
to publish file message.Message
PNPublishFileMessage Yes The payload should be of the type PNPublishFileMessage
.
Basic Usage
m := PNPublishMessage{
Text: "Look at this photo!",
}
file := PNFileInfoForPublish{
ID: "d9515cb7-48a7-41a4-9284-f4bf331bc770",
Name: "cat_picture.jpg",
}
message := PNPublishFileMessage{
PNFile: file,
PNMessage: m,
}
resPubFile, pubFileResponseStatus, errPubFileResponse := pn.PublishFileMessage().Channel("my_channel").Message(message).Execute()
fmt.Println(resPubFile, pubFileResponseStatus, errPubFileResponse)
Returns
The PublishFileMessage()
operation returns type PublishFileMessageResponse
which contains the following properties:
Property Name | Type | Description |
---|---|---|
Timetoken | int64 | Returns a long representation of the timetoken when the message was published. |