0
からバイナリファイルの取得:は(ここでは、ApacheのHTTPClientの、Kotlinのソースコード)POSTリクエストを送信するPOSTリクエスト
val httpPost = HttpPost("http://localhost:8000")
val builder = MultipartEntityBuilder.create()
builder.addBinaryBody("file", File("testFile.zip"),
ContentType.APPLICATION_OCTET_STREAM, "file.ext")
val multipart = builder.build()
httpPost.entity = multipart
val r = httpClient.execute(httpPost)
r.close()
を私は火花Javaのリクエスト・オブジェクトなどを介して私のポストハンドラーで要求を受け取ります。投稿リクエストから元のファイル(およびボーナスとしてのファイル名)を取得するにはどうすればよいですか?本体が元のファイルよりも大きいため、request.bodyAsBytes()メソッドはいくつかのバイトを追加しているようです。
おかげで、スパークのドキュメントのページの一番下の近くヨルグ
返信ありがとうございますが、悲しいことに、 q.raw()。getParts()またはreq.raw()。getPart( "file")は、単にポストハンドラの実行を終了します。 私は呼び出しをトレースし、どこかでspark-javaの深いところで、POSTリクエストは処理済みとしてマークされます。ハンドラはまだアクティブですが、getParts()またはgetPart()を超えて実行されることはありません。 私はKotlinに新しいので、spark-java Kotlinポートの問題であるかどうかはわかりません。 – osx
実行が突然停止した場合は、例外が原因である可能性が最も高いです。 \t \t 'Spark.exception(Exception.class、(e、request、response) - > {e.printStackTrace();});例外を見るための追加ルートとして使用してください(申し訳ありません、知りません)。 – cello
返信いただきありがとうございます。 JetBrains IDEは、コードを 'Spark.exception(Exception :: class.java、{e、request、response-> e.printStackTrace()})'に変換し、エラー(マルチパートメッセージなし)を見つけることができました。 'getParts()'が空のリストを返し、 'getPart(" file ")'の例外を返すので、コードは(編集された)コードのところで 'java.lang.NullPointerException'を返します。 POST要求のコンテンツタイプは 'multipart/form-dataです。境界= Z2Dl0386ZA0OMWccx1VRo6h7emmRriXNz'。 – osx