php - 无法通过 http 将 base64 图像内容 POST 到 PHP 服务器

标签 php ios swift

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

这是我所拥有的示例代码 让 url = NSURL(字符串: "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 header ?我在这里错过了什么吗? 谢谢

最佳答案

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

关于php - 无法通过 http 将 base64 图像内容 POST 到 PHP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36310093/

相关文章:

ios - 如何通过快速按下标签来显示/隐藏标签?

ios - 使用 Storyboard 更改 segue 端点

ios - 如何从 touchesBegan 事件中获取 CGPoint?

swift - 如何更改一个表格 View 单元格的分隔符颜色?

ios - 如何绘制不在道路上的路线,MKMapView

swift - 如何在模块加载时执行一次?

php - 在 php 中查询下拉列表中的选定项目

php - 为什么 switch(true) 的 NPath 复杂度比 if() elseif() 小?

php - 使用 jQuery 自动刷新 Div 从 5 秒到零

php - 如何使用标签缓存MySQL数据以在需要时删除缓存?