2

画像ピッカーコントローラを使用して画像やファイルをアップロードするときに問題があります。画像ピッカーから画像を選択した後、event_id、booking_id、memeber_id、upfileの各パラメータを渡します。これらの値はすべてPostmanのフォームデータ形式です。これらの価値をAPIに送る方法は?郵便配達では、それは完璧に動いていますが、ここではXcodeの表示エラーです。私はパラメータを考えている、私はそのエラーが含まれて送信されます。Swift4で複数のパラメータを含むマルチパートフォームデータを使って画像やファイルをアップロードするには

func UploadRequest() { 
    let x: Int = defaults.integer(forKey: "ObjectID") 
    user_id = String(x) 
    auth_key = defaults.value(forKey: "AuthKey") as! String 
    var request2 = URLRequest(url: uploadDoc! as URL) 
    request2.httpMethod = "POST" 

    //define the multipart request type 
    if (self.img.image == nil) { 
     return 
    } 
    let image_data = UIImageJPEGRepresentation(self.img.image!, 1) 
    if(image_data == nil) { 
     return 
    } 
    let boundry = generateBoundaryString() 
    request2.setValue(user_id, forHTTPHeaderField: "user_id") 
    request2.setValue(auth_key, forHTTPHeaderField: "auth_key") 
    request2.setValue("multipart/form-data; boundary=\(boundry)", forHTTPHeaderField: "Content-Type") 
    let param = ["event_id":evId,"booking_id":receivedId,"member_id":memId] 
    print(param) 
    request2.httpBody = createBody(params: param, filePathKey: "upfile", imageDatakey: image_data! as NSData, boundary: boundry) as Data 
    self.jsonDifferentRunDoc(passString: request2) 
} 

//Generate Boundry String 
func generateBoundaryString() -> String { 
    return "Boundary-\(UUID().uuidString)" 
} 

func createBody(params: [String: String]?, filePathKey: String, imageDatakey: NSData, boundary: String) -> NSData { 
    let body = NSMutableData() 
    if params != nil { 
     for (key, value) in params! { 
      body.appendString(boundary) 
      body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") 
      body.appendString("\(value)\r\n") 
     } 
    } 

    let filename = "jk.jpg" 
    let mimetype = "image/jpg" 

    body.appendString(boundary) 
    body.appendString("Content-Disposition: form-data; name=\"upfile\"; filename=\"\(filename)\"\r\n") 
    body.appendString("Content-Type: \(mimetype)\r\n\r\n") 
    body.append(imageDatakey as Data) 
    body.appendString("\r\n") 
    body.appendString("--".appending(boundary.appending("--"))) 

    //print("Body = \(body)") 
    return body 
} 

この機能を実行するとエラーが表示されます。

+0

どのようなエラーが表示されますか? –

+0

エラーを教えてください –

+0

APIにエラーが表示されています。フレームワークエラー。 –

答えて

1

境界のアップロード中に構文エラーがあります:

lineBreak = "\r\n"; 
body.appendString("--\(boundary)--\(lineBreak)"); 

これを試してみてください。

関連する問題