首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何上传文件分片alamofire swift5?

如何上传文件分片alamofire swift5?
EN

Stack Overflow用户
提问于 2021-01-25 11:32:56
回答 1查看 147关注 0票数 0

我正在尝试通过multipart向服务器发送文件。它可以是图像,也可以是普通文件。我对URLConvertible的使用有一些困难。正如我所看到的,Alamofire有这样的方法,这可能对我有用:

代码语言:javascript
复制
AF.upload(multipartFormData: <(MultipartFormData) -> Void>, to: <URLConvertible>)

但是在这里,因为你可以,我不能附加拦截器,它将处理401错误。为此,我创建了这样的变量:

代码语言:javascript
复制
let manager =  Session(configuration: URLSessionConfiguration.default, interceptor: CallInterceptor.init(method:HTTPMethod.post))

还创建了请求:

代码语言:javascript
复制
var request = URLRequest(url: Pathes.init(endpoint: "photo").resourseUrl)
request.httpMethod = HTTPMethod.post.rawValue

最后的用法是附加在照片选择器上的:

代码语言:javascript
复制
  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        guard let fileUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL else { return }
        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
 
         .....


          manager.upload(multipartFormData: { (formData) in
                formData.append(fileUrl, withName: "photo", fileName: fileName, mimeType: mediaType)
            }, to: request as! URLConvertible).validate(statusCode: 200..<300)
            .responseJSON(completionHandler: { (response) in
                print(response.debugDescription)
            })


}

}

但结果是我的应用程序崩溃了,错误如下:

代码语言:javascript
复制
Could not cast value of type 'Foundation.URLRequest' (0x7fff85d1dbd8) to 'Alamofire.URLConvertible' (0x7ffb558a5320)

我想我有两种方法:使用另一个AF方法或者创建另一个请求类型。但是我不能想象哪种方法一方面能帮到我,另一方面我又不知道如何创建URLConvertible。我想我可以这样做:

代码语言:javascript
复制
 let urlRequest: Alamofire.URLRequestConvertible = request

但这款应用程序再次崩溃。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-01-25 12:07:15

如果您希望使用URLRequest而不是URL,则需要使用适当的upload重载:upload(multipartFormData:with:)

代码语言:javascript
复制
manager.upload(multipartFormData: { (formData) in
                formData.append(fileUrl, withName: "photo", fileName: fileName, mimeType: mediaType)
    }, with: request)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65878638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档