2017-09-29 20 views
0

私の要求と共にパラメータとして画像を送信したいと思います。私は私のPUT要求を呼び出すために、以下のコードを使用しましたが、身体にイメージを追加する方法はわかりません。swift3でサーバーに画像をアップロード

func myImageUploadRequest() 
    { 
     let headers = [ 
      "content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", 
      "cache-control": "no-cache" 
     ] 
     let parameters = [ 
      [ 
       "name": "Name", 
       "value": "Swift" 
      ], 
      [ 
       "name": "Key", 
       "fileName": "123.png" 
//UIImagePNGRepresentation(myImageView.image!) 

      ] 
     ] 

     let boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW" 

     var body = "" 
     var error: NSError? = nil 
     do{ 
     for param in parameters { 
      let paramName = param["name"]! 
      body += "--\(boundary)\r\n" 
      body += "Content-Disposition:form-data; name=\"\(paramName)\"" 
      if let filename = param["fileName"] { 
       let contentType = param["content-type"]! 
       let fileContent = try String(contentsOfFile: filename as! String, encoding: String.Encoding.utf8) 
       if (error != nil) { 
        print(error) 
       } 
       body += "; filename=\"\(filename)\"\r\n" 
       body += "Content-Type: \(contentType)\r\n\r\n" 
       body += fileContent 
      } else if let paramValue = param["value"] { 
       body += "\r\n\r\n\(paramValue)" 
      } 
     } 
     // }//do 


     let request = NSMutableURLRequest(url: NSURL(string: "http://——----docUpload/MediaUpload/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) 
     request.httpMethod = "PUT" 
     request.allHTTPHeaderFields = headers 
     // request.httpBody = postData as Data 
     let session = URLSession.shared 
     let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in 
      if (error != nil) { 
       print(error) 
      } else { 
       let httpResponse = response as? HTTPURLResponse 
       print(httpResponse) 
      } 
     }) 

     dataTask.resume() 
    } 

     catch { 
     } //new 

} 

私は多くの例を見てきましたが、試してみましたが、自分で実装することはできません。私のコードをチェックして、これを手伝ってください。

+0

PUTメソッドを使用してもよろしいですか? POSTメソッドで試してください – Firoj

+0

PUTメソッド –

+0

私はあなたのファイルの添付ファイルのコードがOKであると思っています。サーバ側でも にチェックしました。 – Firoj

答えて

0

イメージをBase64でエンコードすることもできます。このイメージをBase64に文字列として含めることができます。このanswerはjavascriptを参照していますが、このアプローチのプラスとマイナスを一般的に説明しています。

構文チェックにはanswerがありますが、これは必要なすべてのオプションを示していますが、以下のコードではリクエストの本文に追加できるファイルの内容を示しています。

if let image = UIImage(named:"imageNameHere"), 
    let imageData = UIImagePNGRepresentation(image) { 

    let fileContent = imageData.base64EncodedString(options: .lineLength64Characters) 
} 
関連する問題