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
Can';t将图像上载到服务器swift_Swift_Post_Server_Nsurlsession - Fatal编程技术网

Can';t将图像上载到服务器swift

Can';t将图像上载到服务器swift,swift,post,server,nsurlsession,Swift,Post,Server,Nsurlsession,我正在尝试将图像上载到服务器。现在,我得到了一个错误响应,它检查name='image',这个错误意味着它不是。我设置的行是: body.appendString("Content-Disposition: form-data; name='image'; filename='test.jpg'") 我的POST请求的完整代码是这样的:我得到了一个200,唯一的问题是名称参数,我真的搞不懂 func imageUploadRequest() { let stringUrl =

我正在尝试将图像上载到服务器。现在,我得到了一个错误响应,它检查name='image',这个错误意味着它不是。我设置的行是:

body.appendString("Content-Disposition: form-data; name='image'; filename='test.jpg'")
我的POST请求的完整代码是这样的:我得到了一个200,唯一的问题是名称参数,我真的搞不懂

    func imageUploadRequest()
{

    let stringUrl = "http://88.162.41.55/app_backend/public/api/v1/image?_r=1836486547600309"
    let URL = NSURL(string: stringUrl.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!
    let request = NSMutableURLRequest(URL: URL)
    request.HTTPMethod = "POST";
    request.setValue("Bearer \(jwtToken)", forHTTPHeaderField: "Authorization")

    let boundary = generateBoundaryString()

    request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

    let imageData = UIImageJPEGRepresentation(image, 1)

    if(imageData == nil)  {
        print("image data is nil")
        return
    }

    let body:NSMutableData = NSMutableData()
    body.appendString("--\(boundary)\r\n")
    body.appendString("Content-Disposition: form-data; name='image'; filename='test.jpg'")
    body.appendString("Content-Type: image/jpg")
    body.appendData(imageData!)
    body.appendString("\r\n")

    body.appendString("--\(boundary)--\r\n")

    request.HTTPBody = body

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil {
            print("error=\(error)")
            return
        }            
        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print(" response = \(responseString!)")

        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
            print("json", json)
        } catch {
            print("bad things happened")
        }

    }

    task.resume()
}
有什么想法吗?非常感谢你

示例会话

func getMetaData(lePath:String, completion: (string: String?, error: ErrorType?) -> Void) {
// **** get_metadata ****
    let request = NSMutableURLRequest(URL: NSURL(string: "https://api.dropboxapi.com/2/files/get_metadata")!)
    let session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"

    request.addValue("Bearer ab-blah", forHTTPHeaderField: "Authorization")
    request.addValue("application/json",forHTTPHeaderField: "Content-Type")
    request.addValue("path", forHTTPHeaderField: lePath)
    let cursor:NSDictionary? = ["path":lePath]
    do {
        let jsonData = try NSJSONSerialization.dataWithJSONObject(cursor!, options: [])
        request.HTTPBody = jsonData
        print("json ",jsonData)
    } catch {
        print("snafoo alert")
    }

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        if let error = error {
            completion(string: nil, error: error)
            return
        }
        let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
        //print("Body: \(strData)\n\n")
        do {
            let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers);


            completion(string: "", error: nil)
        } catch {
            completion(string: nil, error: error)
        }
    })
    task.resume()

}

使用NSURLSession,前几个月发布了一个类似问题的解决方案。谢谢,但这不是我正在使用的吗?是的;对不起,您的权利您使用的语法是正确的。这里是我正在打的一个类似电话的示例;有一些关键的区别,特别是在我编码参数的方式上。