2016-11-09 3 views
0

hochladen Ich habe den gleichen Code vor der Aktualisierung Alamofire auf Version 4.0, um Bild auf den Server hochladen und es funktionierte sehr gut, aber jetzt habe ich diese Fehler ich habe viel versucht, aber zu jedem Zeitpunkt der neuen Fehler scheinen mir:Typ "ParameterEncoding" hat keine Mitglied 'URL' beim Versuch, Bild über Alamofire 4.0

Erster Fehler: enter image description here

Zweiter Fehler: enter image description here

Mein Code:

func uploadFile() { 

     let image = UIImage(named: "ios9.jpg") 
     let newimage : NSData = UIImageJPEGRepresentation(selectedImage.image!, 32)! as NSData 

    let newRandomName = randomStringWithLength(32) 
    let fname = (newRandomName as String) + ".jpg" 

    let parameters = [ 
    "pic"   :NetData(data: newimage as Data, mimeType: .ImageJpeg, filename: fname), 
    "msg"  :self.detailmsg, 
    "customer_key" : self.CUSTOMER_KEY 
    ] as [String : Any] 



    let urlRequest = self.urlRequestWithComponents("link", parameters: parameters as NSDictionary) 


    //First error here 
    Alamofire.upload(urlRequest.0, data: urlRequest.1) 
    .progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in 
    print("\(totalBytesWritten)/\(totalBytesExpectedToWrite)") 
    } 
    .responseJSON { response in 
    debugPrint(response) 
    } 

} 


func urlRequestWithComponents(_ urlString:String, parameters:NSDictionary) -> (URLRequestConvertible, NSData) { 

    // create url request to send 
    let mutableURLRequest = NSMutableURLRequest(url: URL(string: urlString)!) 
    mutableURLRequest.httpMethod = Alamofire.HTTPMethod.post.rawValue 
    //let boundaryConstant = "myRandomBoundary12345" 
    let boundaryConstant = "NET-POST-boundary-\(arc4random())-\(arc4random())" 
    let contentType = "multipart/form-data;boundary="+boundaryConstant 
    mutableURLRequest.setValue(contentType, forHTTPHeaderField: "Content-Type") 


    // create upload data to send 
    let uploadData = NSMutableData() 

    // add parameters 
    for (key, value) in parameters { 

     uploadData.append("\r\n--\(boundaryConstant)\r\n".data(using: String.Encoding.utf8)!) 

     if value is NetData { 
      // add image 
      let postData = value as! NetData 


      //uploadData.appendData("Content-Disposition: form-data; name=\"\(key)\"; filename=\"\(postData.filename)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) 

      // append content disposition 
      let filenameClause = " filename=\"\(postData.filename)\"" 
      let contentDispositionString = "Content-Disposition: form-data; name=\"\(key)\";\(filenameClause)\r\n" 
      let contentDispositionData = contentDispositionString.data(using: String.Encoding.utf8) 
      uploadData.append(contentDispositionData!) 


      // append content type 
      //uploadData.appendData("Content-Type: image/png\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!) // mark this. 
      let contentTypeString = "Content-Type: \(postData.mimeType.getString())\r\n\r\n" 
      let contentTypeData = contentTypeString.data(using: String.Encoding.utf8) 
      uploadData.append(contentTypeData!) 
      uploadData.append(postData.data as Data) 

     }else{ 
      uploadData.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n\(value)".data(using: String.Encoding.utf8)!) 
     } 
    } 
    uploadData.append("\r\n--\(boundaryConstant)--\r\n".data(using: String.Encoding.utf8)!) 



    // return URLRequestConvertible and NSData 
    // return (Alamofire.ParameterEncoding.encode(mutableURLRequest as! ParameterEncoding).0, uploadData) 

    //Second error here 
    return (Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: nil).0, uploadData) 
} 
+0

Insted, dies zu tun Sie es von 'multipartFormData' –

+0

@HamzaAnsari tun kann, wie ich tun kann, dass können Sie mir Beispiel geben Sie bitte? –

+0

@samah wie hast du es behoben? Habe das gleiche Problem - Type ParameterEncoding hat kein Mitglied 'url' –

Antwort

0
let image = UIImage(named: "ios9.jpg") 
let params:[String:Any] = ["msg": self.detailmsg, 
          "customer_key": self.CUSTOMER_KEY] 

let urlRequest = try! URLRequest(url: url, method: .post, headers: nil) 

Alamofire.upload(multipartFormData: { (multipartFormData) in 

    if let imageData = UIImageJPEGRepresentation(image!, 1.0){ 
     multipartFormData.append(imageData, withName: "pic", fileName:"image.jpg", mimeType: "image/jpg") 
    } 
    for (key, value) in self.parameters! { 
     let data = "\(value)".data(using: .utf8) 
     multipartFormData.append(data!, withName: key) 
    } 

}, with: urlRequest) { (result) in 
     switch result{ 
     case .success(let request, _, _): 
      request.responseJSON { response in 
       debugPrint(response) 
      } 
     case .failure(let error): 
      print(error.localizedDescription) 
     } 
} 
Verwandte Themen