swift - 在alamofire和URLSession中上传data key,怎么添加?
问题描述
我需要将数据上传到服务器并且有这个功能
uploadTask(with request: URLRequest, from bodyData: Data) -> URLSessionUploadTask
alamofire 使用的签名几乎相同
upload(_ data: Data, with urlRequest: URLRequestConvertible)
知道如何将名称添加为附加数据的键吗?
我看过这个iOS - 如何使用 uploadTask 上传视频?在标题中添加文件名,我已经检查了苹果文档,它没有说明它
非常感谢
解决方案
假设你要上传一张key为as的图片userImage
,那么你可以使用multipart的特性Alamofire
。我SwiftyJSON
这里用过。您可以根据自己的要求进行修改。
var parameters: [String:Any]?
//fill your parameters with data. Image is stored as Data and other values are string in this case.
Alamofire.upload(multipartFormData: { (multipartFormData:MultipartFormData) in
for (key, value) in parameters! {
if key == "userImage" {
multipartFormData.append(
value as! Data,
withName: key,
fileName: "profileImage.jpg",
mimeType: "image/jpg"
)
} else {
//multipartFormData
multipartFormData.append((value as! String).data(using: .utf8)!, withName: key)
}
}
}, usingThreshold: 1, to: "yourServiceURL", method: .post, headers: ["yourHeaderkey":"value"]) { (encodingResult:SessionManager.MultipartFormDataEncodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if response.result.error != nil {
return
}
if let data = response.result.value {
let json = JSON(data)
}
}
break
case .failure(let encodingError):
debugPrint(encodingError)
break
}
}
推荐阅读
- hadoop - 如何将文件添加到 Hive
- android - 如何在viewpager中将值从片段传递到片段?
- kotlin - 无法编译应用程序 java.lang.IllegalStateException: processingEnv 不能为空
- java - SSLHandshakeException:PKIX 路径构建失败。即使在我导入证书之后
- spring-boot - 意外的 AST 节点:(
- python - Hough Circle 中的参数表示什么以及如何知道要使用哪些值?
- c# - Unity 2017.4.34f1 无法使用 IL2CPP 构建 APK
- sql - 我需要一个查询来比较一个星期六的总销售额与今年剩余时间的平均星期六总销售额
- powershell - 使用 PowerShell GUI 进行无人值守软件安装
- c++ - 将矩形土地划分为范围