使用 URL swift Alamofire 上传视频

2023-12-27

我需要使用 alamofire 将视频上传到服务器。用户选择视频,我在 didFinishPickingMediaWithInfo 中成功获取 URL,如下所示:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        picker.dismiss(animated: true, completion: nil)
        if let pickedVideo = info[UIImagePickerControllerMediaURL] as? URL {
            print(pickedVideo)
        }
    }

然后我使用以下代码上传视频:

Alamofire.upload( multipartFormData: { multipartFormData in
            multipartFormData.append(videoUrl, withName: "video", fileName: "video.mp4", mimeType: "video/mp4")

        }, to: url, encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    if let JSON = response.result.value as? NSDictionary {
                        completion(true)
                    } else {
                        completion(false)
                        print(response)
                    }
                }
            case .failure(let encodingError):
                print(encodingError)
                completion(false)
            }
        })

它进入故障块,并显示以下错误:

multipartEncodingFailed(Alamofire.AFError.MultipartEncodingFailureReason.bodyPartFileNotReachableWithError(atURL: 文件:/private/var/mobile/Containers/Data/Application/C662AB0E-6A4F-40FB-9949-7F0A5AA2BA49/tmp/52C86F07-5DCC-413A-9F8C-71BBF33F793C.MOV -- file:///,错误:错误域=NSCocoaErrorDomain Code=260“无法打开文件“52C86F07-5DCC-413A-9F8C-71BBF33F793C.MOV”,因为 没有这样的文件。


您正在尝试通过 URL 上传视频,但这是不可能的multipartFormData需要上传数据而不是URL,所以首先将其转换为Data然后上传。

显示 uiimagePickerController 的功能仅适用于视频:

func showImagePicker(){
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.mediaTypes = [kUTTypeMovie as String]
        self.present(picker, animated: true, completion: nil)
    }

UIImagePickerControllerDelegate功能,在选择视频后起作用:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            picker.dismiss(animated: true, completion: nil)

            guard let videoUrl = info[UIImagePickerControllerMediaURL] as? URL else {
                return
            }
            do {
                let data = try Data(contentsOf: videoUrl, options: .mappedIfSafe)
                print(data)
//  here you can see data bytes of selected video, this data object is upload to server by multipartFormData upload
            } catch  {
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 URL swift Alamofire 上传视频 的相关文章

随机推荐

  • Entity Framework Core SelectMany 然后包含

    我似乎无法弄清楚如何让 EF Core 在使用 SelectMany 时包含 加载相关对象 context MyObject Where w gt w Id Id SelectMany m gt m SubObject Include i
  • 失败 - 无法在上下文路径部署应用程序

    在解释问题之前 我只想指出我对 NetBeans 和 Tomcat 完全陌生 而且我正在做一个学校项目 话虽这么说 问题正是标题所说的 以下是我尝试运行简单的 Hello World jsp 时的输出 就地部署于 C Users lostl
  • 使用 LESS 构建选择器列表

    一般问题 我有媒体查询 我在其中更改某些文本元素 如下所示 body single entry content p body single entry content ul body single entry content ol body
  • Cognito 和 Java - 用户名不能是电子邮件格式,因为用户池是为电子邮件别名配置的

    我创建了 Cognito 用户池 如下所示 settings https i stack imgur com sXf06 png for 允许用户通过电子邮件或用户名登录 并且对于每个用户来说都是唯一的 这是我的帐户 Cognito 实施
  • Jquery 验证删除规则不起作用

    我正在根据输入动态设置验证 在添加验证之前 我要删除规则并添加它是必需的元素 我设置删除规则后 消息不会消失 for var i 0 i lt data length i switch data i FieldName case ADDRE
  • Scala Play 2.1.0 - 资产未出现在 Heroku 上?

    我的应用程序在开发中运行良好 图像显示 但是当部署到 Heroku 时 它们神秘地消失了 代码是 img src routes Assets at myImage png gt Heroku 是否搞砸了 或者我错过了什么 确保您的项目pub
  • Select2 formatResult 获取选项的属性

    使用 在 select2 中获取自定义数据属性 https stackoverflow com questions 22261209 get custom data attribute in select2 with select 我们需要
  • 从 timedelta 中提取分钟 - Python

    我有一个包含 timedelta 的列 我想创建一个额外的列 从 timedelta 列中提取小时和分钟 df time delta hour minute 02 51 21 401000 2h 51min 03 10 32 401000
  • 在哪里可以找到 System.Linq.Dynamic dll?

    我正在到处寻找这个dll 但在任何地方都找不到它 有人知道在哪里可以得到它并可以帮助我吗 谢谢 现在可以通过NuGet https nuget org packages System Linq Dynamic画廊也是
  • Node.js mongodb如何连接到mongo服务器的replicaset

    我在用mongo and node js在一个应用程序中 mongo数据库由两台服务器组成 在给出的例子中http howtonode org express mongodb http howtonode org express mongo
  • 在LUA中调用Rest api端点

    我需要从 Lua 脚本调用 Rest API 端点 我怎样才能做到这一点 例如 我可以通过以下curl命令调用端点 curl X GET H X Parse Application Id ParseAppID H X Parse REST
  • NodeJS - SHA256 密码加密

    我目前正在学习 NodeJS 中的加密和密码安全 我正在使用当前使用 PBKDF2 的当前示例 我想将其切换为使用 SHA256 这可能和 或有意义吗 我该怎么办呢 var crypto require crypto var len 128
  • ACTION_PICK 与 MediaStore.Images.Media.INTERNAL_CONTENT_URI 允许用户选择通过 picasa 同步的图像(不在设备上?)

    我正在运行 ICS 并使用相同 Google 帐户的平板电脑和手机上测试我们的应用程序 如果我在一台设备上拍照 它将显示在另一台设备上 通过 Picasa 同步 奇怪的是 当我执行正常操作时 照片会显示在两个设备上 Intent inten
  • 退出 root conda 环境

    一旦我安装了 miniconda 我就永久处于 root miniconda 环境中 例如 luc montblanc conda info envs conda environments bunnies home luc minicond
  • Imgur API 和 VB.NET 帮助 - Image POST

    我正在尝试将图像发送到 Imgur 的服务器 一切都很顺利 我从解析器中获取了图像的 URL 但是当我尝试在网络浏览器上打开它时 我没有得到图像 只有一个 损坏的图像 图标 我认为这是转换为字节数组的问题 但我不明白 请让我知道 修复我的代
  • 在 Servlet/JSP 中加载属性文件[重复]

    这个问题在这里已经有答案了 我创建了一个jar从我的Java project并想在一个JSP Servlet Project 我正在尝试加载一个属性文件 比如说我的sample propertiesJSP Servlet Project保存
  • 通过Webpack导入模块中的图片

    我的应用程序使用 NodeJs webpack 和 ES2015 我似乎无法弄清楚如何在我的模块中导入图像 以下不起作用 import css image t1 png 编辑 根据 Sitian 的要求 这是我的 webpack 配置 co
  • 隐藏 SSRS 中的列

    我正在使用 SSRS 2012 和 Excel 2010 我想在导出到 Excel 时隐藏一列 在浏览了一些论坛后 似乎最好的方法是转到您正在查找的内容的列或文本框隐藏并在 可见性 隐藏 选项下将 表达式 设置为 IIF Globals R
  • Chicken计划中的命名空间

    命名空间在 Chicken Scheme 中如何工作 我现在正在使用parley鸡蛋 当我定义一个名为例如的函数时read 由于名称冲突而导致错误 实际上 因为我的read覆盖parley s own read 并且以错误的类型调用它 这是
  • 使用 URL swift Alamofire 上传视频

    我需要使用 alamofire 将视频上传到服务器 用户选择视频 我在 didFinishPickingMediaWithInfo 中成功获取 URL 如下所示 func imagePickerController picker UIIma