首页 > 解决方案 > 图像无法快速上传 S3 存储桶

问题描述

我正在使用 minio 来保存图像,因为我使用 AWSS3 Bucket,当将图像上传到 s3Bucket 时,它显示错误的 url。我用下面的代码上传图片,

      let access = "minioadmin"
            let secret = "minioadmin"
            let credentials = AWSStaticCredentialsProvider(accessKey: access, secretKey: secret)
            let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, 
            endpoint: AWSEndpoint(region: .USEast1, service: .S3,
            url: URL(string:"https://dev.chats.com:4333")),credentialsProvider: credentials)
            
            AWSServiceManager.default().defaultServiceConfiguration = configuration
            let data: Data = loadimage.pngData()!
            let remoteName = generateRandomStringWithLength(length: 12)+"."+data.format
            print("REMOTE NAME ",remoteName)
            let s3BucketName = "iostesting"
            let expression = AWSS3TransferUtilityUploadExpression()
            expression.progressBlock = { (task, progress) in
                DispatchQueue.main.async(execute: {
                    print("task")
                })
            }
            var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
            completionHandler = { (task, error) -> Void in
                DispatchQueue.main.async(execute: {
                    // Do something e.g. Alert a user for transfer completion.
                    // On failed uploads, `error` contains the error object.
                })
            }
            let transferUtility = AWSS3TransferUtility.default()
            transferUtility.uploadData(data, bucket: s3BucketName, key: remoteName, contentType: "image/"+data.format, expression: expression, completionHandler: completionHandler).continueWith { (task) -> Any? in
                if let error = task.error {
                    print("Error : \(error.localizedDescription)")
                }
                if task.result != nil {
                    print("task",task)
                    let url = AWSS3.default().configuration.endpoint.url
                    print(AWSS3.default().configuration.endpoint.url)
                    //                    print("printthevalues",AWSS3.default().configuration.endpoint.url)
                    let publicURL = url?.appendingPathComponent(s3BucketName).appendingPathComponent(remoteName)
                    if let absoluteString = publicURL?.absoluteString {
                    }
                }
                return nil
            }

当我上传图片时它显示以下消息,我如何在 s3Bucket 中上传图片。

NSErrorFailingURLStringKey=https://iostesting.dev.chats.com:4333/tA9QI2bThUHo.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20210813%2Fus-east-1%2Fs3%2Faws4_request&X- Amz-Date=20210813T123658Z&X-Amz-Expires=2999&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=961fb2a1a1384789fac09d8c9d4602e8dc6b59e11f8268670db57339628ef10c,

标签: swiftamazon-s3minio

解决方案


推荐阅读