@@ -8,29 +8,37 @@ import (
8
8
"net/url"
9
9
)
10
10
11
+ // StoreFileResult incluses the file id and url. The ID is required
12
+ // when deleting file
13
+ type StoreFileResult struct {
14
+ ID string `json:"id"`
15
+ URL string `json:"url"`
16
+ }
17
+
11
18
// StoreFile uploads a new file and returns its public URL using SB CDN.
12
- func StoreFile (token , filename string , file io.ReadSeeker ) (string , error ) {
19
+ func StoreFile (token , filename string , file io.ReadSeeker ) (StoreFileResult , error ) {
20
+ var res StoreFileResult
21
+
13
22
// multipart form data
14
23
var buf bytes.Buffer
15
24
w := multipart .NewWriter (& buf )
16
25
17
26
fw , err := w .CreateFormFile ("file" , filename )
18
27
if err != nil {
19
- return "" , fmt .Errorf ("error creating form field: %v" , err )
28
+ return res , fmt .Errorf ("error creating form field: %v" , err )
20
29
}
21
30
22
31
if _ , err := io .Copy (fw , file ); err != nil {
23
- return "" , fmt .Errorf ("error copying file data to form field: %v" , err )
32
+ return res , fmt .Errorf ("error copying file data to form field: %v" , err )
24
33
}
25
34
26
35
w .Close ()
27
36
28
- var fileURL string
29
- if err := request (token , "POST" , "/storage/upload" , w .FormDataContentType (), & buf , & fileURL ); err != nil {
30
- return "" , fmt .Errorf ("error while uploading file: %v" , err )
37
+ if err := request (token , "POST" , "/storage/upload" , w .FormDataContentType (), & buf , & res ); err != nil {
38
+ return res , fmt .Errorf ("error while uploading file: %v" , err )
31
39
}
32
40
33
- return fileURL , nil
41
+ return res , nil
34
42
}
35
43
36
44
// DownloadFile retrieves the file content as []byte
0 commit comments