将文件上传到Amazon S3时出错

时间:2018-02-05 16:58:42

标签: ios swift amazon-web-services amazon-s3

我想从我的iOS应用程序(用Swift编写)上传一个csv文件到我的亚马逊S3存储桶。要做到这一点,我使用以下代码:

//Create
let fileName = "Export.csv"
let path = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(fileName)
csvText = CreateCSVAccount()
do {
   try csvText.write(to: path!, atomically: true, encoding: String.Encoding.utf32BigEndian)
   //Prepare Upload
   let uploadingFileURL = path
   let uploadRequest = AWSS3TransferManagerUploadRequest()
   let Bucketname = "mybucket/CSV"
   uploadRequest?.bucket = Bucketname
   uploadRequest?.key = "mycsvfile.csv"
   uploadRequest?.body = uploadingFileURL!

   //Upload File
    transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in
        if let error = task.error as NSError? {
            if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
                switch code {
                case .cancelled, .paused:
                    break
                default:
                    print("Error Contact uploading: \(String(describing: uploadRequest?.key)) Error: \(error)")
                }
            } else {
                print("Error Contact uploading: \(String(describing: uploadRequest?.key)) Error: \(error)")
            }
            return nil
        }
        let uploadOutput = task.result
        print("Upload complete for: \(String(describing: uploadRequest?.key))")
        print("uploadOutput: \(String(describing: uploadOutput))")
        return nil
    })
} catch {
    print("Failed to create file")
    print("\(error)")
}

问题有时会起作用,有时我会收到以下错误:

Message=You did not provide the number of bytes specified by the Content-Length HTTP header, NumberBytesExpected=412, Code=IncompleteBody, RequestId=075D1F5B0A377E89

有人可以帮帮我吗?

非常感谢你!

0 个答案:

没有答案