0

我想用Play發送文件到Stripe!斯卡拉2.5。
該文件說,應該將請求(捲曲當量)是這樣的:使用Play將文檔發送到Stripe! Scala 2.5

curl https://uploads.stripe.com/v1/files \ 
    -u sk_test_BQokikJOvBiI2HlWgH4olfQ2: \ 
    -F purpose=dispute_evidence \ 
    -F file="@/path/to/a/file.jpg" 

我的是:

def test: Action[MultipartFormData[TemporaryFile]] = Action(parse.multipartFormData) { request => 
    val image = request.body.file("picture").get 

    val info = Map("purpose" -> Seq("identity_document")) 
    val attachment = 
    FilePart[TemporaryFile](
     key = "file", 
     filename = "file", 
     contentType = image.contentType, 
     ref = image.ref) 
    val formData: MultipartFormData[TemporaryFile] = 
    MultipartFormData(
     dataParts = info, 
     files = Seq(attachment), 
     badParts = Seq.empty) 

    import services.MultipartFormDataWritable.anyContentAsMultipartFormWritable 

    wSClient 
    .url("https://uploads.stripe.com/v1/files") 
    .withAuth("secret_key", "", WSAuthScheme.BASIC) 
    .post(formData) 
    .map(response => println(response.body)) 

    Ok 
} 

但條紋返回我這個Bad Request error

"error": { 
    "type": "invalid_request_error", 
    "message": "Missing required param: file.", 
    "param": "file" 
} 

什麼時我做錯了?

回答

0

這工作:

val file = request.body.file("picture").get 

     val filename = file.filename 
     val contentType = file.contentType.getOrElse(logAndThrowException("Id card without content type")) 

     if (contentType != "image/png" && contentType != "image/jpeg" && contentType != "image/jpg") { 
     logAndThrowException("Wrong content type (jp[e]g or png required)") 
     } 

     val tmpFile = file.ref.file 
     wSClient 
     .url("https://uploads.stripe.com/v1/files") 
     .withAuth(stripeTestAPIKey, "", WSAuthScheme.BASIC) 
     .withHeaders("Stripe-Account" -> stripeAccount) 
     .post(
      Source(
      iterable = 
       FilePart("file", filename, Option("text/plain"), 
       FileIO.fromPath(tmpFile.toPath)) :: 
       DataPart("purpose", "identity_document") :: 
       List())) 
相關問題