Alamofire 使用 PUT 上传图像

2024-01-01

我目前正在尝试使用预先签名的网址将图像上传到亚马逊。

它的工作方式是,我发出 GET 请求来获取预签名的 URL,然后发出 PUT 请求以使用 GET 请求返回的 url 上传图像。

这两条规则是:Content-Type 必须是 image\jpeg,http 方法必须是 PUT。

因此,目前我的上传代码返回 200,但亚马逊拒绝该数据。

这是我的代码:

上传返回的实际url是:

                    var headers = Alamofire.SessionManager.defaultHTTPHeaders
                    headers["Content-Type"] = "image/jpeg"
                    let URL = try! URLRequest(url: url, method: .put, headers: headers)

                    Alamofire.upload(multipartFormData: { (multipartFormData) in
                        let compressionQuality: CGFloat = 0.8
                        guard let imageData = UIImageJPEGRepresentation(image, compressionQuality) else {
                            print("Unable to get JPEG representation for image \(image)")

                            return
                        }

                        multipartFormData.append(imageData, withName: "image.jpg", mimeType: "image/jpeg")
                        // code
                    }, with: URL, encodingCompletion: { (result) in
                        switch result {
                        case .success(let upload, _, _):
                            upload.responseJSON { response in
                                print("SUCCESS -> \(response.request?.allHTTPHeaderFields)")

                            }

                        case .failure(let encodingError):
                            print(encodingError)
                        }
                    })

我怀疑当我打印 http 标头时,Content-Type 总是显示 multipart/form-data 而不是我需要的 image/jpeg,但目前我不知道如何解决这个问题。


实际上我最近也有同样的要求(除了我需要 PNG 而不是 JPG)。

以下是您的做法。

let compressionQuality: CGFloat = 0.8
guard let imageData = UIImageJPEGRepresentation(image, compressionQuality) else {
    print("Unable to get JPEG representation for image \(image)")
    return
}

let headers = [
    "Content-Type": "image/jpeg"
]

// presignedUrl is a String

Alamofire.upload(imageData, to: presignedUrl, method: .put, headers: headers)
    .responseData {
        response in

        guard let httpResponse = response.response else {
             print("Something went wrong uploading")
             return
        }

        if let publicUrl = presignedUrl.components(separatedBy: "?").first { 
             print(publicUrl)
        }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Alamofire 使用 PUT 上传图像 的相关文章

  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 在 iOS 中擦除绘图

    我正在开发一个绘图应用程序 我有一个UIBezierPath 我用它在touchesMoved中绘制 并将其转换为CGPath 然后在tCGplayer上绘制 这是我的代码 void touchesMoved NSSet touches w
  • 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

    如何配置 TensorFlow Serving 以使用存储在 DigitalOcean Spaces 中的文件 重要的是解决方案 提供对这两个配置的访问and模型文件 提供对数据的非公开访问 我已经配置了一个名为your bucket na
  • Amazon SNS 仪表板中创建平台应用程序的选项在哪里?

    我在这个页面向 AWS 注册您的移动应用程序 https docs aws amazon com sns latest dg mobile push send register html第一个子主题的第 1 项 标题为 向 AWS 注册您的
  • 根据一个属性对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为 NSMutableArrayallItems其中有以下内容ProductData目的 每个对象都有cid cname ctype and cimage 正如您在下面看到的 json 对象没有按顺序出
  • iOS 相互认证

    我正在尝试在 IOS 5 中实现相互身份验证 但遇到了麻烦 NSUnderlyingError Error Domain kCFErrorDomainCFNetwork Code 1200 An SSL error has occurred
  • -all_load 其他链接器标志导致第 3 方框架中的重复符号错误

    我有一个用于内部应用程序的静态库 其中包含一些常见的实用程序代码 从以前的 SO 帖子中 我发现为了在运行时加载静态库中的类别 我需要包括 all load ObjC在 构建设置 中的 其他链接器标志 字段中 但是 对于我也在使用的闭源第三
  • 使用 AVMutableVideoCompositionLayerInstruction 旋转视频

    我正在 iPhone 4 上使用前置摄像头拍摄视频 并将视频与其他一些媒体资源结合起来 我希望该视频为纵向 所有视频的默认方向都是横向 在某些情况下 您必须手动管理 我正在使用 AVFoundation 特别是 AVAssetExportS
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 将 C 转换为 Swift:向 UITextField 添加放大镜图标

    如何在左侧添加一个放大镜图标UITextField 我找到了类似问题的答案here https stackoverflow com questions 11811705 where can i get the magnifying glas
  • 如何在CloudFormation模板中描述AWS Lambda函数测试事件?

    我在 CloudFormation 模板中描述了现有的 AWS Lambda 函数 然后我面临下一个问题 在我们的 Lambda 中 我们配置了一些测试事件 这有助于我们验证一些用例 我的意思是下面屏幕截图中的功能 但我没有看到任何将这些测
  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • scntool:无法转换文件,失败原因:*** -[__NSSingleObjectArrayI objectAtIndex:]:索引 1 超出范围

    我正在 Xcode 9 3 下开发一个基于 iOS 11 3 SceneKit 的项目 我有几个 dae 文件格式的 3D 模型 每当我构建项目时 其中一个模型不会被复制到最终的 iOS 包中 深入研究错误 我在复制捆绑资源构建阶段收到以下
  • NSCFData isRessized 崩溃?

    我目前在控制台中收到此崩溃日志 2011 08 23 19 18 40 064 App 1697 707 NSCFData isResizable unrecognized selector sent to instance 0x11f1c
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • 无法从 iOS 中的框架访问 .nib(XIB) 文件

    我已经从现有的代码库中创建了一个框架 并尝试在新的代码库中使用它 这很好用 但是当我尝试访问属于我的框架包的一部分的 nib 文件时 我的应用程序崩溃了 这是我用来访问视图控制器 XIB 文件的代码 testViewController c
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • 如何将图像放入此 UIPickerView 中?

    我不知道如何创建一个在文本一侧带有图像的自定义 UIPickerView 我一直在寻找一种方法 我刚刚发现了这个 UIView pickerView UIPickerView pickerView viewForRow NSInteger
  • 如何在 Swift 中将文件名与文件扩展名分开?

    给定包中文件的名称 我想将该文件加载到我的 Swift 应用程序中 所以我需要使用这个方法 let soundURL NSBundle mainBundle URLForResource fname withExtension ext 无论
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc

随机推荐

  • 结合两个事件处理程序,jQuery

    我想在一个对象上观察两个事件 input blur function event ajaxSubmit this event preventDefault form submit function event ajaxSubmit this
  • 在 React 组件之间共享类实例对象

    比如说 如果我有一个使用单例模式实现的网络管理器类 export default class Manager private static Instance Manager public static get Instance Manage
  • “all (==1) [1,1..]”不终止的数学意义是什么?

    直觉上 我希望得到 数学 答案all 1 1 1 to be True因为列表中仅包含 1 的所有元素都等于 1 但是我理解 计算上 评估无限列表以检查每个元素实际上是否等于 1 的过程永远不会终止 因此表达式而是 评估 到底部或 我发现这
  • 为什么 emacs 24 找不到我添加的自定义主题?

    我的整个 emacs 设置是here https github com metaperl emacs 我加载了 init theme el 文件here https github com metaperl emacs blob master
  • 在 Yii 框架中,如何组合列并在下拉列表中显示为显示字符串

    我有一个dropDownList在我看来 它的人口来自clients表 该表包含类似的列first name last name id等等 现在我想展示first name and last name作为显示文本和id作为下拉列表中的值 我
  • 使用 jquery 返回上一页而不刷新,而不是 angularjs

    我正在本地运行一个脚本 在其中一个函数中 它会转到不同的页面 一旦完成 我希望它返回到上一页并继续在本地运行脚本 有没有办法在不刷新页面的情况下返回上一页 我用了parent history back 这将返回到上一页 但会刷新页面 以便我
  • Javadoc:package.html 或 package-info.java

    当尝试创建包级 Javadoc 注释时 首选方法是什么 你做什么工作 包信息 java Pros Newer Cons 滥用类 类用于代码 而不仅仅是注释 包 html Pros HTML 扩展意味着它不是代码 IDE 文本编辑器中的语法突
  • angularjs 一个元素上有两个指令

    我有两个指令 Generated by CoffeeScript 1 6 3 app directive focusMe function return scope focus focusMe link function scope ele
  • 获取 JPanel 上单击位置的颜色?

    我只想要一种在单击的像素为白色时激活的方法 我将如何实施这个 试图寻找一种返回坐标颜色的方法 但我找不到 依靠 如果你有一个缓冲图像 http java sun com j2se 1 4 2 docs api java awt image
  • 在 MVC 中上传文件时,字符串或二进制数据会被截断

    该文件只有 14kb 14 000 字节 我读过varbinary max 列类型 这就是我正在使用的 仅支持 8 000 字节 那是对的吗 如何将我的文件上传到数据库 if file ContentLength lt 3 1048576
  • 如何从非英语值创建一个 slug?

    我有模型Author有字段名字 姓氏 我想添加另一个字段 slug 它将包含字段串联的段 但是 这些字段包含非英语字符 我需要一个英语符号来创建链接模板 本地主机 作者 str slug 我该如何实施 要解决这个问题 您可以使用unidec
  • Docker - 无法在卷内的容器之间共享数据(docker-compose 3)

    我现在有一些用于 Web 应用程序的容器 nginx gunicorn postgres 和节点 用于从源代码构建静态文件和 React 服务器端渲染 在节点容器的 Dockerfile 中 我有两个步骤 构建和运行 Dockerfile
  • 使用 Rails 导入 gmail/yahoo/hotmail/aol 地址簿

    我想从 gmail hotmail yahoo 和 aol 地址簿中导入用户的地址簿 我正在 Rails 中寻找可以帮助我做到这一点的 gem 插件 任何帮助表示赞赏 Thanks 我一直在努力Contacts http github co
  • 从 Firebase 获取数据

    我正在尝试从 Firebase 获取数据 我尝试过这样的操作 FIREBASE REF childByAppendingPath tasks observeEventType Value withBlock snapshot gt Void
  • 如何让表头透明?

    我花了很多时间来解决这个问题 但仍然不明白我做错了什么 我需要我的标题是透明的 没有背景 举个例子 但我不明白透明度是如何工作的 我已经尝试了一切 但它总是白色的 透明度仅适用于文本 帮帮忙 我真的很期待 body margin 0 fon
  • 弹性容器内的居中元素正在增长并溢出到顶部之外[重复]

    这个问题在这里已经有答案了 我一定忘记了垂直和水平居中弹性盒的一些基本知识 容器位于具有垂直滚动的父级内 当容器变得太高时 它会超出父级顶部 从而剪切内容 底部保持原状 尝试调整视图的高度或添加更多线条以查看其实际效果 body html
  • 无法从 Microsoft Dynamics CRM WebAPI 调用 BulkDelete 操作

    我正在尝试致电批量删除 操作 https learn microsoft com en us previous versions dynamicscrm 2016 developers guide mt491158 v 3Dcrm 8 本地
  • 更改分支点

    我有一个分支叫feature它有一些提交 分支及其提交仍然位于我的机器本地 还没有push编辑到公共存储库 该图看起来像 A B C D E F G master P Q R feature 现在我意识到我应该建立分支feature脱离先前
  • 在测试中覆盖调试模块

    我有一个 Gradle 应用程序 其项目结构类似于杰克 沃顿的 u2020 https github com jakewharton u2020 src androidTest debug main release 在我的应用程序类中 我构
  • Alamofire 使用 PUT 上传图像

    我目前正在尝试使用预先签名的网址将图像上传到亚马逊 它的工作方式是 我发出 GET 请求来获取预签名的 URL 然后发出 PUT 请求以使用 GET 请求返回的 url 上传图像 这两条规则是 Content Type 必须是 image