大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中使用multipart / form-data上传图像和参数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将图像上传到Drupal端点.
我遇到的问题是我收到带有text / html内容类型的http 200 OK响应.在HTML响应中,有一条明确的信息表明节点已正确创建.但是在服务器端,图像不与节点相关联.
另外,我不期望text / html,但是我在Accept标头中指定了application / json.
它已经可以在使用Android Rest Template的Android应用中运行.以下是供参考的代码:
String url = getUrl("node/{info_iD}/attach_file"); httpHeaders headers = new httpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); if (user.isLoggedIn()) { headers.add(user.getSessionName(),user.getSessionId()); headers.add("X-CSRF-Token",user.getToken()); headers.add("Cookie",user.getSessionName() + "=" + user.getSessionId()); } MultiValueMap<String,Object> parts = new LinkedMultiValueMap<>(); parts.add("files[field_mobileinfo_image]",new FileSystemResource(info.getImageUri())); parts.add("field_name","field_mobileinfo_image"); httpentity<MultiValueMap<String,Object>> request = new httpentity<>(parts,headers); return getRestTemplate().exchange(url,httpR_774_11845@ethod.POST,request,Void.class,info.getId()).getBody();
我知道我没有@R_675_5313@d(Void.class)中检查响应,但一切正常,图像附加到服务器端的节点.
现在在Swift的iOS上我尝试了很多东西.
使用AFNetworking:
func upload(mobileInfo: MobileInfo) { let user = userservice.load() let url = Config.buildUrl("") let manager = AFhttprequestOperationManager(baseURL: NSURL(String:url)!) let serializer = AFhttprequestserializer() serializer.SETVALue(user.sessionId,forhttpHeaderField: user.sessionName) serializer.SETVALue(user.token,forhttpHeaderField: "X-CSRF-Token") serializer.SETVALue("\(user.sessionName)=\(user.sessionId)",forhttpHeaderField: "Cookie") manager.requestserializer = serializer manager.responseserializer.acceptableContentTypes.removeAll(keepCapacity: @R_801_11372@sE) manager.responseserializer.acceptableContentTypes.insert("application/json") let imageData = UIImageJPEGRepresentation(mobileInfo.image,0.3) manager.POST("/node/\(mobileInfo.id)/attach_file",parameters: nil,construcTingBodyWithBlock: { (formData) -> Void in formData.appendPartWithFileData( imageData,name: "files[field_mobileinfo_image]",filename: "field_mobileinfo_image",mimeType: "image/jpeg") formData.appendPartWithFormData("field_mobileinfo_image".dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion: truE),name: "field_name") },success: { (operation,data) -> Void in println(data) }) { (operation,error) -> Void in println(error) } }
手动从其他stackoverflow问题中获取信息:
func upload2(mobileInfo: MobileInfo) { let user = userservice.load() let imageData = UIImageJPEGRepresentation(mobileInfo.image,0.3) let url = NSURL(String:Config.buildUrl("/node/\(mobileInfo.id)/attach_file"))! println(url) var request = NSMutableURLrequest(URL: url) var session = NSURLSession.sharedSession() request.httpR_774_11845@ethod = "POST" var boundary = "---------------------------14737809831466499882746641449" var contentType = "multipart/form-data; boundary=\(boundary)" println(contentTypE) request.addValue(contentType,forhttpHeaderField: "Content-Type") request.addValue("application/json",forhttpHeaderField: "Accept") request.addValue("\(user.sessionName)=\(user.sessionId)",forhttpHeaderField: "Cookie") request.addValue(user.sessionId,forhttpHeaderField: user.sessionName) request.addValue(user.token,forhttpHeaderField: "X-CSRF-Token") println(request.allhttpHeaderFields) var body = NSMutableData() body.appendData("\r\n--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData("Content-Disposition: form-data; name=\"field_name\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData("field_mobileinfo_image".dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion: truE)!) body.appendData("\r\n--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData("Content-Disposition: form-data; name=\"files[field_mobileinfo_image]\"; filename=\"img.jpg\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData("Content-Type: application/octet-stream\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(imageData) body.appendData("\r\n--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) var returnData = NSURLConnection.sendSynchronousrequest(request,returningResponse: nil,error: nil) var returnString = NSString(data: returnData!,encoding: NSUTF8StringEncoding) println("returnString \(returnString)") }
使用SRWebClient:
func upload3(mobileInfo: MobileInfo) { let user = userservice.load() let imageData:NSData = NSData(data: UIImageJPEGRepresentation(mobileInfo.image,0.3)) SRWebClient.POST("http://master.test.lesfrontaliers.lu/node/\(mobileInfo.id)/attach_file") .headers(["Accept": "application/json",user.sessionName: user.sessionId,"X-CSRF-Token": user.token,"Cookie": "\(user.sessionName)=\(user.sessionId)"]) .data(imageData,fieldName:"files[field_mobileinfo_image]",data:["field_name":"field_mobileinfo_image"]) .send({ (response: AnyObject!,status: int) -> Void in println(status) println(responsE) },failure:{(error:NSError!) -> Void in println(error) }) }
请救救我!
以上是大佬教程为你收集整理的ios – 在Swift中使用multipart / form-data上传图像和参数全部内容,希望文章能够帮你解决ios – 在Swift中使用multipart / form-data上传图像和参数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。