如何使用 Discourse API 上传图片

大家好,

我试图通过以下 Discourse API 使用 Java 代码上传图片:
https://discourse.example.com/uploads.json
并在请求体中传递 JSON:
{
“type” : “avatar”,
“user_id”: 1,
“synchronous”: true,
“file”: “二进制字符串”
}

但收到的响应如下:

{
“failed”: “FAILED”,
“message”: “undefined method `tempfile’ for #String:0x000055fc2e0a01d8
}

请问我哪里做错了?
请帮忙。

我也遇到了同样的问题。@Saurabh_Khandelwal,如果您能找到解决方案,请回复我。

1 个赞

file 参数需要命名为 files[]。请参阅以下使用 Postman 的示例:

这是我的示例数据
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 进行集成。

你成功让这功能运行了吗?我一直在用 Node.js 尝试各种组合,但始终无法让它正常工作。

我收到了一个 422 不可处理的实体错误。

Discourse 文档 中,它指出请求的 content-type 是 application/json

而在 这篇帖子 中,Postman 示例使用的是 form-data,并且当我观察 Discourse Web 界面中的编辑器时,它使用的是 multipart 表单提交。

有人知道如何在不使用 Ruby 客户端的情况下通过 API 实现这一点吗?

这似乎仍然不起作用。

当我尝试上传二进制图像时,我收到此错误:

Unprocessable Entity - {"failed":"FAILED","message":"undefined method `tempfile' for an instance of String"}