使用 swift 将多个图像上传到 Bucket AWS S3

2024-04-26

我正在尝试使用以下代码将图像上传到存储桶 AWS s3。

    let ext = "jpeg"
    let uploadRequest = AWSS3TransferManagerUploadRequest()
    uploadRequest?.acl = .publicRead
    uploadRequest?.body = URL(fileURLWithPath: path)
    uploadRequest?.key = s3BucketKey
    uploadRequest?.bucket = S3BucketName
    uploadRequest?.contentType = "image/" + ext
    DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
        let transferManager = AWSS3TransferManager.default()
        transferManager.upload(uploadRequest!).continueWith { (task) -> AnyObject! in
            if let error = task.error {
                print("Upload failed ❌ (\(error))")
            }
            if task.result != nil {
                let s3URL = "http://s3.amazonaws.com/\(S3BucketName)/\(String(describing: uploadRequest!.key!))"
                print("Uploaded to:\n\(s3URL)")
                completion(s3URL)
            }
            else {
                print("Unexpected empty result.")
                completion(nil)
            }
            return nil
        }
    }

但现在我需要将多个图像上传到 AWS S3 存储桶,我想到在循环中使用相同的函数来上传文件,但它需要更多的处理时间,而且我还需要在所有图像上传后同步我的数据。

请提出解决方法,该方法将减少上传多个图像的处理时间,并且在所有图像上传后我应该收到通知。提前致谢。


你可以尝试使用RxSwift https://github.com/ReactiveX/RxSwift框架。就像是...

// Multiple image uploading
RRAWSRxUpload.upload(dataList: [AWSImageData(type: .image1, image: #imageLiteral(resourceName: "image1")), AWSImageData(type: .image2, image: #imageLiteral(resourceName: "image2"))])
.subscribeOn(ConcurrentDispatchQueueScheduler.init(qos: .background))
.observeOn(MainScheduler.instance)
.subscribe(onNext: { response in
    print(response)
    //Get here all file uploaded key names after that you will call your server API call to update those files.
}, onError: { error in
    print(error.localizedDescription)
}).disposed(by: rxbag)

另外,请在 GitHub 演示上了解更多详细信息RRAWSRX上传 https://github.com/Rahul-Mayani/RRAWSRxUpload.

你还可以通过 RxSwift 调用你的服务器 API阿拉莫菲尔 https://github.com/Alamofire/Alamofire图书馆。

完成 AWS S3 上传部分后,您将通过以下方式调用服务器 Alamofire API 请求RRAlamofireRxAPI https://github.com/Rahul-Mayani/RRAlamofireRxAPI.

RRAWSRxUpload.upload(dataList: [AWSImageData(type: .image1, image: #imageLiteral(resourceName: "image1")), AWSImageData(type: .image2, image: #imageLiteral(resourceName: "image2"))])
        .flatMap { (keys) -> Observable<DataModelObject> in
            print(keys)// pass your files array/model to your server as parameters
            return RRAPIRxManager.rxCall(apiUrl: APIEndPoint.Name.uploadAWSImage, httpMethod: .post, param: parameters)
        }
        .subscribeOn(RXScheduler.concurrentBackground)
        .observeOn(RXScheduler.main)
        .subscribe(onNext: {(response) in
            print(response)
        }, onError: { (error) in
            print(error)
        }).disposed(by: rxbag)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 swift 将多个图像上传到 Bucket AWS S3 的相关文章

  • html 文件上传的默认文件夹和文件名

    我正在使用 jQuery Ajax 插件将图像文件从本地计算机上传到网络服务器 该网页呈现一个标记为Upload Image File 用户按下按钮并从浏览器显示的弹出目录列表中选择要上传的文件 服务器上的 PHP 存储图像文件 一切正常
  • UITextField 中光标闪烁,但键盘不出现

    我得到了一个带有文本字段的简单详细视图 在详细的viewController中我写了这段代码 void viewDidAppear BOOL animated self textField becomeFirstResponder NSLo
  • 电话号码的 Swift 2 国家/地区代码

    我正在尝试从 iPhone 用户处获取国家 地区代码 我不确定是否有有关该国家 地区以及某些应用程序 如 Viber 如何建议拨号代码的信息 我到目前为止 let currentLocale NSLocale currentLocale l
  • iOS 以编程方式撤销位置服务权限

    有没有一个功能CLLocationManager or UIApplication撤销位置权限类似功能unregisterForRemoteNotifications撤销推送通知权限 The stopUpdatingLocationCLLo
  • 为什么使用自动布局时视图的框架宽度始终为 600 x 600

    我正在制作一个基本的扫雷应用程序 用于快速练习 娱乐 我想让板的尺寸 10 个图块宽 适应任何 iOS 屏幕 为此 我通过获取tileContainer view frame width和 10来设置每个图块的大小 我的问题是 tileCo
  • 更快地估计 CollectionView 中单元格高度的方法

    我的 UICollectionView 中有一个无限滚动 我注意到我估计单元格高度的方式是我的集合视图的瓶颈 我滚动收藏视图的次数越多 它就会导致一些长时间的延迟 有没有更好的方法来估计单元格的高度 这些单元格有不同的高度 因为我有一个UI
  • Asp.Net Mvc/ jQuery 中带进度条的文件上传?

    我正在寻找一个用于 Asp Net MVC 的带有进度条的文件上传的 jQuery 插件 我们在现有的 Asp Net WebForm 应用程序中使用 RadUpload 控件 它在不使用 Flash Silverlight 的情况下显示状
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • 为什么这会破坏 UILabel adjustmentFontSizeToFitWidth?

    iOS 7 Xcode 5 使用 UILabel 此代码可以工作 自动调整文本大小以适应 self testLabel numberOfLines 0 self testLabel lineBreakMode NSLineBreakByWo
  • Swift:如何审查/过滤输入的脏话等文本?

    我只是想看看是否有一种既定的方法可以做到这一点 或者如何去做 我有一个文本字段 它本质上充当我的 iOs 应用程序中的表单 用户可以在其中发布内容 我不能让用户发布脏话 不恰当的废话 所以我想过滤掉他们输入的字符串包含这些单词之一的内容并显
  • NSURLSessionDownloadTask 出现存储几乎已满磁盘警告的问题

    我在使用 NSURLSessionDownloadTask 处理 ios 上的 空间不足 磁盘已满 错误时遇到问题 如果由于应用程序中完成下载而导致磁盘已满 我会接到电话 URLSession 会话 NSURLSession 任务 NSUR
  • 亚马逊 AWS CloudFront 声称不存在这样的存储桶

    我正在尝试设置 CloudFront 来提供图像 但当前无法访问它并返回错误 指定的存储桶不存在
  • 无法发出桥接标头的预编译标头

    我从 GitHub 下载了一个项目 然后 pod 了以下文件 其中一些文件是由 OBJ C 编写的 我使用了桥接头 pod SnapKit pod MJRefresh pod Alamofire pod Kingfisher pod MBP
  • 如何使用自定义布局跳转到 UICollectionView 中的任何 Cell?

    我的水平 UICollectionView 中有 40 个单元格和一个按钮 当我点击按钮时 我可以从 5 号单元格跳转到 10 号单元格 但是一旦我想要转到另一个单元格 例如从 5 到 25 它不起作用 而是变为 0 code func s
  • UIView 内的 UIButton 目标操作

    我有一个习惯UIView我创建了一个UIButton 在该视图中 我有以下代码 func setupViews menuControlButton addTarget self action toggleButton forControlE
  • 如何在 Swift 编程中获得基于导航的模板功能

    我的项目需要一个导航控制器 并且我的应用程序最初有一个社交登录 一旦验证通过 用户将被推送到另一个视图 我在其中显示一个具有 2 个选项卡的选项卡控制器 我不知道如何在 Swift 编程中做到这一点 我已将视图控制器嵌入到导航控制器中 一旦
  • 如何在ios上定义可达性超时

    我使用 Reachability 类来了解我是否有可用的互联网连接 问题是当wifi可用但不能上网时 NetworkStatus currentReachabilityStatus方法花费太多时间 my code Reachability
  • 我可以对图像进行动画处理吗 iOS8 LaunchScreen.xib

    问题 有没有方法可以为针对 iOS 8 1 部署的 Xcode 6 项目的 LaunchScreen xib 文件中的任何内容设置动画 Context 我正在寻找制作简单的动画来传达活动或在用户等待时分散他们的注意力 例子 加载栏 活动指示
  • 如何区分iphone4和iphone 3

    我正在尝试使用 cocos2d 引擎为 iphone 构建游戏 我想知道如何区分用户使用的是 iphone 4 还是 iphone 3 因为我想为 iphone4 加载高分辨率图形 为 iphone 3 加载低分辨率图形 我知道我是否在以下
  • Xcode 找不到我的静态库!

    这是链接器错误 i686 apple darwin10 gcc 4 2 1 Users william Documents SettingsLibrary build Debug iphonesimulator libSettingsLib

随机推荐