在obj C中有很多很多例子,但我正在寻找一个 Swift解决方案.到目前为止,我所能找到的只是一个 https://github.com/awslabs/aws-sdk-ios-samples/tree/master/S3TransferManager-Sample/Swift,但对我来说并不是那么清楚.

我已经在aws网页上配置了s3,我还创建并填充了文件Constans.swift:

import AWSS3
import Foundation

let CognitoRegionType = AWSRegionType.XXXXX  
let DefaultServiceRegionType = AWSRegionType.XXXXX 
let CognitoIdentityPoolId = "MyCognitoIdentityPoolId"
let S3BucketName = "MyS3BucketName"

我还在AppDelegate.swift中添加了以下行:

let credentialsProvider = AWSCognitoCredentialsProvider(regionType: CognitoRegionType,identityPoolId: CognitoIdentityPoolId)
let configuration = AWSServiceConfiguration(region: DefaultServiceRegionType,credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration

我还有一个Swift课程,带有一个按钮和一个图像视图控制器,到目前为止,当我点击按钮时,我可以从画廊或相机拍摄照片,它显示在图像视图上.这是我的代码负责:

@IBOutlet weak var imageView: UIImageView!

@IBAction func captureImage(sender: AnyObject) {

    let imageFromSource = UIImagePickerController()
    imageFromSource.delegate = self
    imageFromSource.allowsEditing = false

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){

        imageFromSource.sourceType = UIImagePickerControllerSourceType.Camera

    }
    else{

        imageFromSource.sourceType = UIImagePickerControllerSourceType.PhotoLibrary

    }

    self.presentViewController(imageFromSource,animated: true,completion: nil)

}

func imagePickerController(picker: UIImagePickerController,didFinishPickingImage image: UIImage,editingInfo: [String : AnyObject]?) {

    imageView.image = image
    self.dismissViewControllerAnimated(true,completion: {})

}

现在我想是添加一个新的按钮,将负责在本教程中上传照片到我的S3存储,是这样的:https://www.youtube.com/watch?v=WZ54fH8AFUk(不幸的是它在目标C在这里,我会很感激,如果你能帮助我一个迅捷版……).谢谢!

====编辑

我一直在关注@the_pantless_coder发布的教程(这一个https://www.codementor.io/tips/5748713276/how-to-upload-images-to-aws-s3-in-swift),我决定修改我现有的方法imagePickerController,到目前为止它看起来像这样:

func imagePickerController(picker: UIImagePickerController,editingInfo: [String : AnyObject]?) {

        imageView.image = image
        self.dismissViewControllerAnimated(true,completion: {})

        let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType,identityPoolId:CognitoIdentityPoolId)
        let configuration = AWSServiceConfiguration(region:CognitoRegionType,credentialsProvider:credentialsProvider)
        AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration

        let ext = "png"
        let imageURL = NSBundle.mainBundle().URLForResource("image",withExtension: ext)!

        let uploadRequest = awss3transfermanagerUploadRequest()
        uploadRequest.body = imageURL
        uploadRequest.key = nsprocessInfo.processInfo().globallyUniqueString + "." + ext
        uploadRequest.bucket = S3BucketName
        uploadRequest.contentType = "image/" + ext
    }

但是这行有问题:

let imageURL = NSBundle.mainBundle().URLForResource("image",withExtension: ext)!

当我在这里只有imageView.image = image时,如何获得imageURL?

解决方法

请确保您有一个桥接标头,您可以在其中导入相应的AWS标头. GitHub上有一个名为 here的例子.

这样做应该使S3方法可用.

-Rohan

如何将我的ios应用程序中的图像上传到存储在aws s3上的存储桶中,并在Swift中完成所有这些操作?的更多相关文章

  1. 将AWS DynamoDB表中的数据加载到iOS上的UITableView

    我的iOS应用程序中使用Swift编写的一个屏幕是UITableView.在这个UITableView中,我想从AWSDynamoDB表中加载名为Books的数据.目前,这是我在故事板上的原型单元格:在表格中我有3个属性:“名称”,“价格”和“ISBN”.我想要的是扫描“书籍”表,并过滤结果,因此结果的“ISBN”属性将包含数字“9”.在我筛选结果后,我想将它们应用到UITableView,因此“

  2. ios – 重用UICollectionView中的单元格时,会短暂显示重用的UICollectionViewCell的旧内容

    我正在使用UICollectionView来显示从URL异步加载的图片网格.我的集合视图使用可重用单元格来显示UICollectionViewCells.当不重复使用单元格时,所有内容都会正确显示,但是当我滚动一下时,重用的单元格会在它们开始正常行为之前短暂闪烁旧内容.以下是自定义UICollectionViewController的实现:这是自定义UICollectionViewCell的实现.

  3. 如何使用AWS iOS SDK从设备上传图像并设置为公开

    由于看起来我们只限于桶数,我试图找出如何完成以下操作:>我有一个iOS应用,用户可以上传一个个人资料图片.>个人资料可以被任何人查看(我想要公开).>理想情况下,我可以上传到一个桶(例如:myprofilepics.s3.amazonaws.com)>理想情况下,每个用户都可以上传到自己的子文件夹(例如:myprofilepics.s3.amazonaws.com/images/userXXX/>

  4. AmazonS3Client putObject只适用于iOS主线程?

    我正在尝试使用AmazonS3Client来放置对象.奇怪的是,它只在我在iOS主线程上运行putObject代码时才起作用.代码基本上是这样的:存在桶,我有权限等.如果我只是打电话在我的代码中,整个视频上传方法运行,但我从来没有得到任何状态回调,没有抛出异常,并且对象永远不会放入其存储桶在S3上.当我在主线程上调用上传函数时,如下所示:我获得进度回调,一切正常,对象成功放入S3存储桶.有没有人知道putObject是否仅适用于iOS主线程?

  5. 如何将我的ios应用程序中的图像上传到存储在aws s3上的存储桶中,并在Swift中完成所有这些操作?

    v=WZ54fH8AFUk(不幸的是它在目标C在这里,我会很感激,如果你能帮助我一个迅捷版……解决方法请确保您有一个桥接标头,您可以在其中导入相应的AWS标头.GitHub上有一个名为here的例子.这样做应该使S3方法可用.-Rohan

  6. swift -结构体

  7. 如何将 Parse 服务器迁移到 Heroku 或 AWS

    然而,Parse已在一月份关闭,官方建议,在2017年1月28日彻底停止服务之前,请迁移Parse应用。在本节教程里,我们会讲述如何将parse-server部署到Salesforce旗下知名的云服务供应商Heroku。部署到Heroku有两种方法可供选择。接下来,部署Heroku。将Parse服务器部署到Heroku首先在电脑上安装Heroku工具条,从链接中可以找到官方安装指南。你的parse-server已经成功地部署到了Heroku。这个变量表示parse在Heroku服务器上的地址。

  8. OpenStack Swift发展历程

    Swift是一个提供RESTfulHTTP接口的对象存储系统,最初起源于Rackspace的CloudFiles,目的是为了提供一个和AWSS3竞争的服务。Swift于2010年开源,是OpenStack最初的两个项目之一。早在2010年,Swift就迎来了第一个Rackspace之外的商用案例——韩国电信,大家很熟悉的维基百科、ebay等也是Swift的用户。相信随着互联网技术的应用架构逐渐被传统行业接受,对象存储和Swift将受到越来越广泛的关注。总而言之,Swift和S3是当前对象存储里面最重要的两

  9. Android S3布局与Galaxy Nexus布局

    我开发了一个应用程序,应该针对galaxyNexus和galaxyS3.两者都有720x1280屏幕分辨率,我只在我的应用程序中使用’dp’值.资源存在于’layout-xhdpi’和’drawable-xhdpi’文件夹中.Nexus上的布局看起来非常精细,但是S3上的填充值略有偏差.我认为是因为S3的屏幕尺寸更大,密度不同.如何为Nexus和S3创建单独的文件夹,以便我可以考虑不同的屏幕尺寸?

  10. 解决RHAS3中Apache2的PHP上传文件大小的限制

    近日将论坛从VBB2升级到VBB3,将上传附件大小设置为2M,可每次上传超过500K的附件都会出错,而之前使用VBB2时却正常。再回忆一下,发现以前用VBB2时的操作系统为RHAS2.1,用的自带的Apache1.x版本,后来升级成VBB3之前,顺便也把系统更换为RHAS3,而RHAS3自带的Apache为2.x版本,其配置文件的组织方式有所改变,也许自己编译安装的Apache就不会出现此种问题,可自己比较懒,不喜欢编译,呵呵.

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部