Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何上传文件多部分alamofire swift5?_Swift_Alamofire_Nsurlrequest - Fatal编程技术网

如何上传文件多部分alamofire swift5?

如何上传文件多部分alamofire swift5?,swift,alamofire,nsurlrequest,Swift,Alamofire,Nsurlrequest,我正在尝试通过多部分将文件发送到服务器。它可以是图像或普通文件。我在使用上有些困难。正如我所见,Alamofire有这样的方法,可能对我有用: AF.upload(multipartFormData: <(MultipartFormData) -> Void>, to: <URLConvertible>) 并创建了请求: var request = URLRequest(url: Pathes.init(endpoint: "photo").r

我正在尝试通过多部分将文件发送到服务器。它可以是图像或普通文件。我在使用上有些困难。正如我所见,Alamofire有这样的方法,可能对我有用:

AF.upload(multipartFormData: <(MultipartFormData) -> Void>, to: <URLConvertible>)
并创建了请求:

var request = URLRequest(url: Pathes.init(endpoint: "photo").resourseUrl)
request.httpMethod = HTTPMethod.post.rawValue
最终用途附在照片选择器上:

  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)
            })


}

}
我认为我有两种方法:使用另一种AF方法或创建另一种请求类型。但我无法想象哪种方法会在某一方面帮助我,而在另一方面我不知道如何创建URL。我想我可以这样做:

 let urlRequest: Alamofire.URLRequestConvertible = request

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

如果你想使用
URLRequest
而不是
URL
,你需要使用合适的
上传
重载:
上传(multipartFormData:with:)

manager.upload(multipartFormData:{(formData)在
append(fileUrl,带名称:“photo”,文件名:fileName,mimeType:mediaType)
},随附:请求)

但在这里,正如我看到的,我还必须使用URLRequestConvertible,而且我还必须创建一些我不知道如何做的多部分数据。您可以添加更多信息吗?不,
URLRequest
已经符合
URLRequestConvertible
了,所以您没有更多的事情要做。您可以使用将现有代码交换到到,删除强制转换,然后完成。您是否检查了代码?我试图发送一个文件,但出现了这样的错误
无法在没有建立连接的情况下确定接口类型
无法在没有连接的情况下确定回退状态
,因为我看到它与新的ios 13连接策略相连接,与此类似,您知道如何修复alamofire使用的问题吗?这似乎不是alamofire问题,而是标准系统TLS问题。我建议你调查一下。
Could not cast value of type 'Foundation.URLRequest' (0x7fff85d1dbd8) to 'Alamofire.URLConvertible' (0x7ffb558a5320)
 let urlRequest: Alamofire.URLRequestConvertible = request