2017-04-11 24 views
1

アップロードで使用したこのコードはチュートリアルでは正常に機能していますが、パラメータはWHERE emp_name = '(従業員を挿入)'ではなく認識されていません私は新しくアップロードされた画像でURLを更新しようとしているので、emp_name = ''と言っています。助けてください。私はこれに新しいです。Swift 3 - パラメータを含む画像をmysqlにアップロードする方法

func UploadRequest() 
{ 
    let url = URL(string: "http://www.example.com/empupload.php") 

    let request = NSMutableURLRequest(url: url!) 
    request.httpMethod = "POST" 
    let boundary = generateBoundaryString() 

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

    if (imageDetail.image == nil) 
    { 
     return 
    } 

    let image_data = UIImagePNGRepresentation(imageDetail.image!) 


    if(image_data == nil) 
    { 
     return 
    } 


    let body = NSMutableData() 
    let loadempname = NSMutableURLRequest() 


    let fname = "test.png" 
    let mimetype = "image/png" 
    let postString = "empName=\(empname.text!))" 


    body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!) 
    body.append("Content-Disposition:form-data; name=\"test\"\r\n\r\n".data(using: String.Encoding.utf8)!) 
    body.append("hi\r\n".data(using: String.Encoding.utf8)!) 


    body.append(postString.data(using: String.Encoding.utf8)!) 
    body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!) 
    body.append("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".data(using: String.Encoding.utf8)!) 
    body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!) 
    body.append(image_data!) 
    body.append("\r\n".data(using: String.Encoding.utf8)!) 



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


    request.httpBody = body as Data 



    let session = URLSession.shared 


    let task = session.dataTask(with: request as URLRequest, completionHandler: { 
     (
     data, response, error) in 

     guard ((data) != nil), let _:URLResponse = response, error == nil else { 
      print("error") 
      return 
     } 

     if let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 
     { 
      print(dataString) 
     } 

    }) 


    task.resume() 


} 
+0

これらの複雑な要求に対しては、Alamofireのようなサードパーティライブラリを使用することをお勧めします。 – kennytm

+0

'\(empname.text!))'なぜ開いている括弧が1つのみで、2つの閉じた括弧がありますか?閉じるブラケットを1つ取り外してみてください –

+0

ブラケットを外してみます –

答えて

0

swatch3.0のAlamofire multipartFormDataから画像を送信できます。ここにサンプルコードがあります:

let parameters = ["name":"YourName"] 

Alamofire.upload(.POST, baseUrl, multipartFormData: 
{ 
    multipartFormData in 

    if let imageData = UIImageJPEGRepresentation(self.imageView.image!, 0.6) 
    { 
     multipartFormData.appendBodyPart(data: imageData, name: "keyName", fileName: "photo.jpg", mimeType: "image/jpeg") 
    } 
    for (key, value) in parameters 
    { 
      if value is String || value is Int 
      { 
       multipartFormData.appendBodyPart(data: "\(value)".dataUsingEncoding(NSUTF8StringEncoding)!, name: key) 
      } 

     } 
}, encodingCompletion: 
    { 
     encodingResult in 
     switch encodingResult 
     { 
      case .Success(let upload, _, _): 
       upload.responseJSON { response in 
       print(response) 
       if String(response.result) == "SUCCESS" 
       { 
        if(response.result.value!.objectForKey("status")) as! String != "fail" 
        { 
         // here you can write success case 
        } 
        else 
        { 

        } 
       } 
       else 
       { 
        MyLoadingView.dismiss(); 
        MyAlertView.showErrorAlert("Please try Again") 
       } 
      } 
      case .Failure(let encodingError): 
       print(encodingError) 
      } 
    }) 
+0

urlをbaseUrlに挿入するにはどうすればよいですか? alamofireがインストールされています。 –

+0

let baseUrl = "あなたのURL" – Roshani

+0

例:let baseUrl = "http://stackoverflow.com/questions" – Roshani

関連する問題