首页 > 解决方案 > 在 swift 4.1 中在服务器端上传图片。图像类型的错误问题:

问题描述

我想在服务器上上传图像。我的以下代码出现图像类型错误:传递参数。我使用NSUrlSession并上传图片。以下代码使用转换器从 Objective-C 转换为 swift。我不知道为什么我会收到这个错误。我是 Swift 语言的新手。我是 Objective-C 开发人员。现在我正在快速学习,如果有任何错误也请给我建议。提前致谢。

 func uploadImage1() {
    diagnosis = ""

    let dict = UserDefaults.standard.dictionary(forKey: "login")! as NSDictionary
    let token = dict.object(forKey: "Token")
    let Doctor_Id = dict.object(forKey: "UserId")
    let patientIdNum = indfoDict.object(forKey: "Patient_Id") as! NSNumber
    let patientId = patientIdNum.stringValue

    doctorID = Doctor_Id as! String

    let BoundaryConstant = "----------V2ymHFg03ehbqgZCaKO6jy"
    // var FileParamConstant = "filedata"
    let requestURL = URL(string: "https://www.stopbadcheck.com/IntegrationService.svc/UploadImage")
    let request = NSMutableURLRequest()
    request.cachePolicy = .reloadIgnoringLocalCacheData
    request.httpShouldHandleCookies = false
    request.timeoutInterval = 30
    request.httpMethod = "POST"
    if let aKey = token {
        request.addValue("\(aKey)", forHTTPHeaderField: "Token")
    }
    let contentType = "multipart/form-data; boundary=\(BoundaryConstant)"
    request.setValue(contentType, forHTTPHeaderField: "Content-Type")
    var body = Data()
    if (image != nil) {
        imageData = UIImageJPEGRepresentation(image!, 1)
    }
    if (imageData != nil) {
        if let anEncoding = "--\(BoundaryConstant)\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if (image != nil) {
            if let anEncoding = "Content-Disposition: form-data; name=\"file\"; filename=\"image.jpg\"\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
                body.append(anEncoding)
            }
            print("body image input ---> \(body)")
        }
        if let anEncoding = "Content-Type: image/jpeg\r\n\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        body.append(imageData!)
        if let anEncoding = "\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        // param1
        if let anEncoding = "--\(BoundaryConstant)\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "Content-Disposition: form-data; name=\"Patient_Id\"\r\n\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = patientId.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }

        // param2
        if let anEncoding = "--\(BoundaryConstant)\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "Content-Disposition: form-data; name=\"Doctor_Id\"\r\n\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = doctorID.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }

        // param3
        if let anEncoding = "--\(BoundaryConstant)\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "Content-Disposition: form-data; name=\"Diagnosis_Desciption\"\r\n\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = diagnosis.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        if let anEncoding = "--\(BoundaryConstant)--\r\n".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
            body.append(anEncoding)
        }
        request.httpBody = body
        let postLength = "\(UInt(body.count))"
        request.setValue(postLength, forHTTPHeaderField: "Content-Length")
        request.url = requestURL
        let session = URLSession.shared
        let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in

            if let data = data {
                // do what you want in success case

                print(data)
                do {
                    let json = try JSONSerialization.jsonObject(with: data) as! Dictionary<String, AnyObject>
                    print("Json--->", json)

                    DispatchQueue.main.async {

                        var dict = NSDictionary()
                        dict = json as Dictionary as NSDictionary
                        print("Dict--->",dict)

                    }
                } catch {
                    print("error")
                }
            }
        })
        dataTask.resume()
    }
}

标签: swift

解决方案


推荐阅读