upload files to Dropbox from iOS app with Swift

后端 未结 3 1330
臣服心动
臣服心动 2020-12-22 05:20

I have completed this tutorial(https://blogs.dropbox.com/developers/2014/09/swift-apps-with-dropbox/) and successfully linked my iOS app with Dropbox. However, I want to be

相关标签:
3条回答
  • 2020-12-22 05:42

    iOS 10.12.3 swift 3.0 SwiftyDropbox 4.1.1 A slightly more complete answer a year on.

     func files_saver(sourcePath: String) {
        let textContent = "Blah Blah Blah"
        let textData:NSData? = textContent.data(using: String.Encoding.utf8) as NSData?
    
        let client = DropboxClientsManager.authorizedClient!
        client.files.upload(path: sourcePath, input: textData as! Data).response { response, error in
            if let metadata = response {
                print("Uploaded file name: \(metadata.name)")
                print("Uploaded file revision: \(metadata.rev)")
    
                // Get file (or folder) metadata
            }
            if let error = error {
                switch error as! CallError<SwiftyDropbox.Files.UploadError> {
                case .routeError(let boxed, let requestId):
                    switch boxed.unboxed {
                    case .path(let failedPath):
                            //print("Failed update 2 path: \(failedPath)")
                            NotificationCenter.default.post(name: Notification.Name("dbFileCreationError"), object: nil, userInfo: nil)
                            break
    
                        default:
                            //print("Unknown \(error)")
                            break
                        }
                case .internalServerError(let code, let message, let requestId):
                    //print("InternalServerError[\(requestId)]: \(code): \(message)")
                    NotificationCenter.default.post(name: Notification.Name("dbInternalServerError"), object: nil, userInfo: nil)
                    break
                case .badInputError(let message, let requestId):
                    //print("BadInputError[\(requestId)]: \(message)")
                    NotificationCenter.default.post(name: Notification.Name("dbBadInputError"), object: nil, userInfo: nil)
                    break
                case .authError(let authError, let requestId):
                    //print("AuthError[\(requestId)]: \(authError)")
                    NotificationCenter.default.post(name: Notification.Name("dbAuthError"), object: nil, userInfo: nil)
                    break
                case .rateLimitError(let rateLimitError, let requestId):
                    //print("RateLimitError[\(requestId)]: \(rateLimitError)")
                    NotificationCenter.default.post(name: Notification.Name("dbRateLimitError"), object: nil, userInfo: nil)
                    break
                case .httpError(let code, let message, let requestId):
                    //print("HTTPError[\(requestId)]: \(code): \(message)")
                    NotificationCenter.default.post(name: Notification.Name("dbHTTPError"), object: nil, userInfo: nil)
                    break
                default:
                    break
                    }
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-22 06:01

    It works.

    let textContent = "Hello Swift Upload"
    
    let textData:NSData? = textContent.dataUsingEncoding(NSUTF8StringEncoding)
    
    var client:DropboxClient? = Dropbox.authorizedClient
    
    if let cli = client {
        cli.files.upload(path: "/Swift-Upload.txt", mode: Files.WriteMode.Add, autorename: false, clientModified: nil, mute: false, body: textData!)
    }
    
    0 讨论(0)
  • 2020-12-22 06:07

    I was able to upload a large(r) file (> 800MB) with this (gist) code (Swift 2.2) -->

    https://gist.github.com/cnharris10/3d744ca13abd13d4d5bd3a363be16dff

    See example screen shot below with another 150mb file uploaded in chunks of 1mb

    0 讨论(0)
提交回复
热议问题