【问题标题】:Cannot POST base64 image content over http to PHP server无法通过 http 将 base64 图像内容发布到 PHP 服务器
【发布时间】:2016-03-30 13:19:52
【问题描述】:

我已阅读所有其他主题,但我的问题是这些主题的混合。所以我试图通过 HTTP 快速将一些内容发送到 php 服务器。在我将图像 base64 内容附加到 http 标记的正文之前,一切正常。我检查了 php 后端最大帖子大小,不是吗。我复制粘贴了swift生成的图片内容,粘贴到chrome中,图片就在那里,所以图片没有错误。

这是我所拥有的示例代码 让 url = NSURL(string: "https:example.com/endpoint") // 让 session = NSURLSession.sharedSession();

    let request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "POST"
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData

    var body = "csrf_token=" + (token.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! as String)
    body += "&email=" + (email?.text)!
    body += "&first_name=" + (firstName?.text)!
    body += "&last_name=" + (lastName?.text)!
    body += "&password=" + password!.text!
    //body += "&image_content=" + imageContent
    body += "&confirm_password=" + confirmPassword!.text!
    body += "&provider=" + provider
    body += "&pictureURL=" + pictureURL

    request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding)
    request.addValue("https:example.com/", forHTTPHeaderField: "origin")
    request.addValue("https:example.com/endpoint", forHTTPHeaderField: "referrer")

    let task = session.dataTaskWithRequest(request) {
        (
        let data, let response, let error) in
        guard let _:NSData = data,  let _:NSURLResponse = response where error == nil else {
            print("error")
            print(data)
            print(response)
            return;
        }
        let dataString = NSString(data :data!, encoding: NSUTF8StringEncoding);
        print(dataString)

        if ((response as! NSHTTPURLResponse).statusCode == 200) {
            dispatch_async(dispatch_get_main_queue(), {
                self.performSegueWithIdentifier("loginAfterSignup", sender: nil)
            })
        }
        else {
            dispatch_async(dispatch_get_main_queue(), {
                print((response as! NSHTTPURLResponse).statusCode)
                print("error code, could not sign up and login")
            })
        }
    }
    task.resume()

因此,当我取消注释带有 base64 字符串内容的行时,我会转到回退调用并打印“错误”。 我不知道为什么它不通过 h​​ttp 发送。有我必须遵守的规则吗?附加一个大字符串后,是否必须设置某个 http 标头?我在这里错过了什么吗? 谢谢

【问题讨论】:

    标签: php ios swift


    【解决方案1】:

    是的,这是一个愚蠢的 Apache 设置错误。我之前修改了 max_post_size 并没有得到任何东西。不过这次我修改了最大请求体参数,终于可以向服务器发送数据了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 2021-12-06
      相关资源
      最近更新 更多