Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 上传多部分swift图像上传内部服务器错误500响应_Ios_Swift_Swift3_Alamofire_Image Uploading - Fatal编程技术网

Ios 上传多部分swift图像上传内部服务器错误500响应

Ios 上传多部分swift图像上传内部服务器错误500响应,ios,swift,swift3,alamofire,image-uploading,Ios,Swift,Swift3,Alamofire,Image Uploading,我迁移到swift 3,为此我必须将Alamofire升级到4, 使用多部分请求上传图像在swift 2中工作正常,相同的API使用相同的参数成功获取内部服务器错误500 下面是swift 2.3代码,运行良好 Alamofire.upload( .POST, AppConstants.kAPIBaseURL + AppConstants.KAPIWidgetUrl + AppConstants.KAPIUpdateUserPhoto,heade

我迁移到swift 3,为此我必须将Alamofire升级到4, 使用多部分请求上传图像在swift 2中工作正常,相同的API使用相同的参数成功获取内部服务器错误500 下面是swift 2.3代码,运行良好

        Alamofire.upload(
        .POST,
        AppConstants.kAPIBaseURL  + AppConstants.KAPIWidgetUrl + AppConstants.KAPIUpdateUserPhoto,headers: headers,
        multipartFormData: { multipartFormData in
            multipartFormData.appendBodyPart(data: imageData!, name: "image[image]", fileName: "myImage.png", mimeType: "image/png")
            multipartFormData.appendBodyPart(data: "\((UserManager._currentUser?.userID)!)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"id")
            multipartFormData.appendBodyPart(data: "profile_picture".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"upload_to")


        },
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .Success(let upload, _, _):

                upload.responseJSON { (JSON) in
                    let abc   = JSON.result.value as! NSDictionary
                    print(abc)
                    let arrayOfResult = abc["results"] as! NSDictionary
                    let responseMessage = abc["message"] as! String
                    let currentUser: MOUser?
                    currentUser = MOUser.init(object: arrayOfResult)
                    UserManager.setCurrentUser(currentUser)
                    dispatch_async(dispatch_get_main_queue(),{
                        //Show Alert in UI
                        print("image uploaded");
                        [self.showAlertViewWithTitle(AppConstants.kEmptyString, message: "\(responseMessage)", dismissCompletion: {

                        })]
                    })
                }

            case .Failure(let encodingError):
                print(encodingError);
            }
        }
    );
下面是带错误的Swift 3代码

Alamofire.upload(
        multipartFormData: { multipartFormData in

            multipartFormData.append(imageData!, withName: "image[image]", fileName: "myImage.png", mimeType: "image/png")
            multipartFormData.append("\(UserManager._currentUser?.userID)".data(using: .utf8, allowLossyConversion: false)!, withName: "id")
            multipartFormData.append("profile_picture".data(using: .utf8, allowLossyConversion: false)!, withName: "upload_to")


    },
        to: AppConstants.kAPIBaseURL  + AppConstants.KAPIWidgetUrl + AppConstants.KAPIUpdateUserPhoto ,method: .post, headers: headers,
        encodingCompletion: { encodingResult in
            print(encodingResult)
            switch encodingResult {

            case .success(let upload, _, _):
                upload.responseJSON { response in

                    print("SUCCESS RESPONSE: \(response)")
                    SVProgressHUD.dismiss()
                    if let info = response as? Dictionary<String, AnyObject> {

                        if let links = info["links"] as! Dictionary<String, AnyObject>? {
                            if let imgLink = links["image_link"] as? String {

                                print("LINK: \(imgLink)")

                            }
                        }

                    }

                }

                upload.uploadProgress { progress in

                    print(progress.fractionCompleted)
                }

                upload.responseString(completionHandler: { (response) in
                    print(response)
                    print(response.data)
                    print(response.debugDescription)
                    print(response.description)
                    print(response.result.description)
                    print(response.response)
                })



            case .failure(let encodingError):
                SVProgressHUD.dismiss()
                print("ERROR RESPONSE: \(encodingError)")

            }//switch

    }
    );
Alamofire.upload(
multipartFormData:{multipartFormData in
multipartFormData.append(imageData!,名称为:“image[image]”,文件名为:“myImage.png”,mimeType:“image/png”)
multipartFormData.append(“\(UserManager.\u currentUser?.userID)”.data(使用:.utf8,allowLossyConversion:false)!,名称为:“id”)
multipartFormData.append(“profile_picture.”数据(使用:.utf8,allowLossyConversion:false)!,名称为:“upload_to”)
},
收件人:AppConstants.kAPIBaseURL+AppConstants.KAPIWidgetUrl+AppConstants.KAPIUpdateUserPhoto,方法:.post,标题:标题,
encodingCompletion:{encodingResult in
打印(编码结果)
开关编码结果{
成功案例(让我们上传,,u):
upload.responseJSON{中的响应
打印(“成功响应:\(响应)”)
SVProgressHUD.disclose()
如果let info=响应为?字典{
如果让links=info[“links”]作为字典{
如果让imgLink=links[“image\u link”]作为字符串{
打印(“链接:\(imgLink)”)
}
}
}
}
upload.uploadProgress{中的进度
打印(进度。已完成分段)
}
upload.responseString(completionHandler:{(响应)在
打印(答复)
打印(响应.数据)
打印(response.debugDescription)
打印(响应.说明)
打印(响应、结果、说明)
打印(response.response)
})
案例失败(let encodingError):
SVProgressHUD.disclose()
打印(“错误响应:\(编码错误)”)
}//开关
}
);
这是服务器错误吗

SUCCESS: {"status":"500","error":"Internal Server Error"}
SUCCESS
Optional(<NSHTTPURLResponse: 0x60000123cda0> { URL: https://../api///imageupload } { status code: 500, headers {
Connection = "keep-alive";
"Content-Length" = 48;
"Content-Type" = "application/json; charset=utf-8";
Date = "Wed, 11 Jan 2017 13:45:59 GMT";
Server = "WEBrick/1.3.1 (Ruby/2.0.0/2015-12-16)";
Via = "1.1 vegur";
"X-Rack-Cache" = "invalidate, pass";
"X-Request-Id" = "78cc7e5c-9bc1-4802-beac-15f8f7c4400a";
"X-Runtime" = "0.167883";
成功:{“状态”:“500”,“错误”:“内部服务器错误”}
成功
可选({URL:https://../api///imageupload }{状态代码:500,标题{
连接=“保持活动”;
“内容长度”=48;
“内容类型”=“应用程序/json;字符集=utf-8”;
日期=“2017年1月11日星期三13:45:59 GMT”;
Server=“WEBrick/1.3.1(Ruby/2.0.0/2015-12-16)”;
Via=“1.1织女星”;
“X-Rack-Cache”=“失效,通过”;
“X-Request-Id”=“78cc7e5c-9bc1-4802-beac-15f8f7c4400a”;
“X-Runtime”=“0.167883”;

如果有人能在这方面帮助我。谢谢!

这一行有区别:

multipartFormData.append("\(UserManager._currentUser?.userID)".data(using: .utf8, allowLossyConversion: false)!, withName: "id")`. 
您不会像在2.3版本中那样强制展开
UserManager.\u currentUser?.userID

multipartFormData.appendBodyPart(data: "\((UserManager._currentUser?.userID)!)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"id")

因此,该“id”字段的字符串可能类似于“可选(“userID”)”而不仅仅是您期望的用户ID。

您写道,服务器端有一个500错误,但您根本不显示服务器代码,也不显示服务器错误的原因。至少显示服务器错误原因可能有助于理解问题。我不知道它是否在服务器端,因为swift 2.3中的相同代码在swift3.0 I上工作正常我有这个错误“SUCCESS:{”status:“500”,“error:“internalserver error”}您确实编写了
获取内部服务器错误500
…是的,我将此作为@xvolkse的响应。您可能希望使用Charles Proxy或类似的应用程序来显示原始请求。似乎如果在2.3中工作正常,您必须在两个代码库之间传递不同的内容。原始请求将让您看到如果有什么不同的话。非常感谢。这就是问题所在