@@ -58,7 +58,9 @@ class FileUploader {
5858 let token : String
5959
6060 let mimeType : String ?
61-
61+
62+ let key : String ?
63+
6264 init ( plainTokens: LCDictionary ) throws {
6365 guard
6466 let providerString = plainTokens [ " provider " ] ? . stringValue,
@@ -76,7 +78,7 @@ class FileUploader {
7678 }
7779
7880 let mimeType = plainTokens [ " mime_type " ] ? . stringValue
79-
81+ self . key = plainTokens [ " key " ] ? . stringValue
8082 self . provider = provider
8183 self . uploadingURLString = uploadingURLString
8284 self . token = token
@@ -94,15 +96,11 @@ class FileUploader {
9496 let payload : LCFile . Payload
9597
9698 /// File name.
97- let name : String
99+ let name : String ?
98100
99101 /// File size.
100102 let size : UInt64
101103
102- /// The resource key.
103- /// Strictly speaking, it's not a file attribute.
104- let resourceKey : String
105-
106104 /// File mime type.
107105 let mimeType : String
108106
@@ -118,13 +116,11 @@ class FileUploader {
118116 init ( file: LCFile , payload: LCFile . Payload ) throws {
119117 let filename = file. name? . value
120118 let mimeType = file. mimeType? . value
121- let resourceKey = FileAttributes . getResourceKey ( filename: filename)
122119
123120 switch payload {
124121 case . data( let data) :
125- self . name = filename ?? resourceKey
122+ self . name = filename
126123 self . size = UInt64 ( data. count)
127- self . resourceKey = FileAttributes . getResourceKey ( filename: filename)
128124
129125 if let mimeType = mimeType {
130126 self . mimeType = mimeType
@@ -138,7 +134,6 @@ class FileUploader {
138134
139135 self . name = filename
140136 self . size = try FileAttributes . getFileSize ( fileURL: fileURL)
141- self . resourceKey = FileAttributes . getResourceKey ( filename: filename)
142137
143138 // It might be a bit odd that, unlike name, we detect MIME type from fileURL firstly.
144139 if let mimeType = mimeType {
@@ -177,29 +172,6 @@ class FileUploader {
177172 }
178173 }
179174
180- /**
181- Generate resource key for file name.
182-
183- It will generate a new random resource key everytime.
184-
185- - parameter filename: The file name.
186- */
187- static private func getResourceKey( filename: String ? ) -> String {
188- let key = Utility . compactUUID
189-
190- guard let filename = filename else {
191- return key
192- }
193-
194- let filenameExtension = ( filename as NSString ) . pathExtension
195-
196- if filenameExtension. isEmpty {
197- return key
198- } else {
199- return " \( key) . \( filenameExtension) "
200- }
201- }
202-
203175 static private func getMIMEType( filenameExtension: String ) -> String ? {
204176 if filenameExtension. isEmpty {
205177 return nil
@@ -249,8 +221,9 @@ class FileUploader {
249221
250222 // Add extra file related attributes to parameters.
251223
252- parameters [ " key " ] = attributes. resourceKey
253- parameters [ " name " ] = attributes. name
224+ if let name = attributes. name {
225+ parameters [ " name " ] = name
226+ }
254227 parameters [ " mime_type " ] = attributes. mimeType
255228 if self . options. contains ( . keepFileName)
256229 || self . file. keepFileName {
@@ -305,7 +278,6 @@ class FileUploader {
305278 completion: @escaping ( LCBooleanResult ) -> Void ) -> LCRequest
306279 {
307280 let token = tokens. token
308- let resourceKey = attributes. resourceKey
309281
310282 let payload = self . payload
311283 let mimeType = attributes. mimeType
@@ -315,7 +287,7 @@ class FileUploader {
315287 var resourceKeyData : Data
316288
317289 do {
318- if let aKeyData = resourceKey . data ( using: . utf8) {
290+ if let aKeyData = tokens . key ? . data ( using: . utf8) {
319291 resourceKeyData = aKeyData
320292 } else {
321293 throw LCError ( code: . malformedData, reason: " Invalid resource key. " )
@@ -344,7 +316,7 @@ class FileUploader {
344316 case . data( let data) :
345317 multipartFormData. append ( data, withName: " file " , fileName: fileName, mimeType: mimeType)
346318 case . fileURL( let fileURL) :
347- multipartFormData. append ( fileURL, withName: " file " , fileName: fileName, mimeType: mimeType)
319+ multipartFormData. append ( fileURL, withName: " file " , fileName: fileName ?? fileURL . lastPathComponent , mimeType: mimeType)
348320 }
349321 }
350322
@@ -393,7 +365,7 @@ class FileUploader {
393365 case . data( let data) :
394366 multipartFormData. append ( data, withName: " filecontent " , fileName: fileName, mimeType: mimeType)
395367 case . fileURL( let fileURL) :
396- multipartFormData. append ( fileURL, withName: " filecontent " , fileName: fileName, mimeType: mimeType)
368+ multipartFormData. append ( fileURL, withName: " filecontent " , fileName: fileName ?? fileURL . lastPathComponent , mimeType: mimeType)
397369 }
398370
399371 multipartFormData. append ( " upload " . data ( using: . utf8) !, withName: " op " )
0 commit comments