HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中使用multipart / form-data上传图像和参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[警告]
正如我所看到的那样,这个问题越来越受到关注,
我想告诉你不要使用以下任何代码.
当我问到这个问题时,斯威夫特还有不到一年的时间,行动速度很快,大多数图书馆都不是 Swift友好且不稳定的.
我强烈建议您尝试使用 Alamofire或其他库来完成这类任务.但不要自己动手.
[/警告]

我想将图像上传到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)
        })
}

请救救我!

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。
@H_673_38@

ios – 在Swift中使用multipart / form-data上传图像和参数

@H_673_46@ 编程之家官方2群(满)
@H_673_46@ 编程之家官方3群(满)

大佬总结

以上是大佬教程为你收集整理的ios – 在Swift中使用multipart / form-data上传图像和参数全部内容,希望文章能够帮你解决ios – 在Swift中使用multipart / form-data上传图像和参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:dataformiosmultipartswift上传使用参数图像
猜你在找的HTML5相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap