こんにちは、皆様。
Java コードから以下の Discourse API を使用して画像をアップロードしようとしています:
https://discourse.example.com/uploads.json
Body に以下の JSON を渡しています:
{
“type” : “avatar”,
“user_id”: 1,
“synchronous”: true,
“file”: “Binary String”
}
しかし、レスポンスでは以下の結果が返ってきます:
{
“failed”: “FAILED”,
“message”: “undefined method `tempfile’ for #String:0x000055fc2e0a01d8”
}
どこが間違っているのでしょうか?
ご協力をお願いします。
dhanya
(Dhanyamol K V)
2
私も同じ問題に直面しています。@Saurabh_Khandelwal さんが解決策を見つけられたら、返信をお願いします。
blake
(Blake Erickson)
3
file パラメータは files[] という名前にする必要があります。Postman を使用した例については、以下の回答をご覧ください:
dhanya
(Dhanyamol K V)
4
これが私のサンプルデータです
Array
(
[type] => avatar
[user_id] => 3
[synchronous] => 1
[file] => 1101000 1110100 1110100 1110000 1110011 111010 101111 101111 1101011 1101001 1111000 101101 1100100 1100101 1110110 101110 1100001 1110011 1110011 1111001 1110011 1110100 101101 1110101 1100011 101110 1100011 1101111 1101101 101111 1110011 1101001 1110100 1100101 1110011 101111 1100100 1100101 1100110 1100001 1110101 1101100 1110100 101111 1100110 1101001 1101100 1100101 1110011 101111 1110000 1101001 1100011 1110100 1110101 1110010 1100101 1110011 101111 110010 110000 110010 110000 101101 110000 110111 101111 1101011 1101001 1111000 1110100 1100101 1100001 1101101 1011111 1101001 1101101 1100111 110001 101110 1101010 1110000 1100111
)
バイナリ文字列としてファイルを送信しています。以下のようにレスポンスが返ってきます。これは Drupal です。
/uploads.json が 422 Unprocessable Entity レスポンスを返しました: {“failed”:“FAILED”,“message”:“undefined method `tempfile’ for #\u003cArray:0x00007f0d5c784810\u003e”}
Drupal と Discourse の統合を試みています。
jwulf
(Josh Wulf)
5
これ、動作しましたか?Node.js であらゆる組み合わせを試しましたが、どうしても動作しません。
422 Unprocessable Entity エラーが発生します。
Discourse ドキュメントには、リクエストの content-type は application/json と記載されています。
こちらの投稿では、Postman の例で form-data が使用されており、Discourse Web UI のコンポーザーを監視すると、マルチパート POST が使用されていることがわかります。
Ruby クライアントを使わずに API でこれを行う方法をご存知の方はいませんか?
CormacW43
(Cormac W.)
6
これはまだ機能していないようです。
バイナリで画像をアップロードしようとすると、このエラーが表示されます。
Unprocessable Entity - {"failed":"FAILED","message":"undefined method `tempfile' for an instance of String"}