AFNetworking 上传带参数的图片
Posted
技术标签:
【中文标题】AFNetworking 上传带参数的图片【英文标题】:AFNetworking upload image with parameters 【发布时间】:2015-08-06 09:52:40 【问题描述】:我使用这种方法将数据发布到我的java servlet,但getParameter("2")为null,但我仍然可以获取图像。
let dics = NSMutableDictionary()
dics.setObject(1, forKey: "2")
dics.setObject(2, forKey: "3")
manager.responseSerializer.acceptableContentTypes = NSSet(object: "text/plain") as Set<NSObject>
manager.POST(urlstr, parameters: dics, constructingBodyWithBlock:
fromData in
fromData.appendPartWithFormData(imgdata, name: "userImg")
, success: (operation, responseObject)in
println("bingo")
) (operation, error) -> Void in
println(error)
我的问题是:
如何获取参数?
我想知道appendPartWithFormData(imgdata, name: "userImg")
,我应该如何使用“userImg”?
我使用 request.getInputStream() 来获取图像..
【问题讨论】:
哪些参数在哪里?您发布了 AFNetworking 的代码,但您似乎在询问如何在服务器端用 Java 获取它? 【参考方案1】:试试Alamofire框架,我一定能解决你的问题。
您可以像这样上传多部分表单数据;
Alamofire.upload(
.POST,
URLString: "http://httpbin.org/post",
multipartFormData: multipartFormData in
multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "userImg")
,
encodingCompletion: encodingResult in
switch encodingResult
case .Success(let upload, _, _):
upload.responseJSON request, response, JSON, error in
println(JSON)
case .Failure(let encodingError):
println(encodingError)
)
【讨论】:
!我会试试看。但是我仍然不知道 appendBodyPart 中参数“userImg”的含义。以及我如何在服务器端使用它?你能解释一下吗? :) 非常感谢!!【参考方案2】:我已经解决了这个问题! :^)
我发布到服务器的方式是正确的,但是我获取参数的方式是错误的。 ios 或 AFN 没有问题。
因为我将多表单数据发布到服务器,所以我不能只使用 request.getParameter("2") 来获取参数。
而appendPartWithFormData(imgdata, name: "userImg")
中的参数“name”是将数据与其他数据分开。
如何获取Servlet中的multipart/form-data参数,请点击:get multipart/form-data parameters in servlet
【讨论】:
【参考方案3】:在 Swift 4 中使用 AFNetworking 上传图片
func uploadUsingPOST_Image (urlPath: NSString, withParameter dictData: NSMutableDictionary, withImage image: UIImage, WithImageName imageName: NSString,successBlock success:@escaping (_ responceData:AnyObject)->Void)
let manager = AFHTTPRequestOperationManager()
var Timestamp: String
return "\(NSDate().timeIntervalSince1970 * 1000)"
let operation = manager.post(urlPath as String, parameters: dictData, constructingBodyWith: (data:AFMultipartFormData!) -> Void in
if image != nil
data.appendPart(withFileData: UIImagePNGRepresentation(image!)!, name: imageName as String, fileName: "\(Timestamp).png", mimeType: "image/png")
, success: (operation, responseObject) -> Void in
success(responseObject as AnyObject)
) (operation, error) -> Void in
print(error, terminator: "")
operation?.start()
【讨论】:
以上是关于AFNetworking 上传带参数的图片的主要内容,如果未能解决你的问题,请参考以下文章