如何获取帖子的上传真实网址?

你好!
我一直在网上到处寻找这个,但运气不佳,所以我在这里寻求帮助。

让我补充一些背景信息,我们正在使用 Discourse 用户 API 创建一个自定义前端。我试图渲染帖子的原始内容,但图像的传递方式是这样的:uploads://<id>.png,因此浏览器无法获取它们。

有没有办法通过 API 获取真实 URL?比如 https://custom.discourse.org/uploads/<id>.png 或类似的?

祝好!

1 个赞

请参阅 Converting short upload URLs to full URLs

6 个赞

非常感谢,我会看看!

1 个赞

@RGJ 我尝试了这里提到的 Python 示例代码:Converting short upload URLs to full URLs - #2 by michaeld

但似乎解码不正确。

这是我最终尝试的代码。它应该解码为“77f164006403e10d7d40143d525f8a5d69390baf”,但我得到的是“77f13112951f458abf39d5e480c59eba10c97f31”,有什么想法为什么会这样吗?我对这类东西不太熟悉。

import base62
input = "h73zkifccxqjtevvuahwq9hefkt"
expected = "77f164006403e10d7d40143d525f8a5d69390baf"

decoded = hex(base62.decode(input, base62.CHARSET_INVERTED))[2:].zfill(40)

print('decoded: ' + decoded)

if expected != decoded:
  print('not decoded correctly')
else:
  print('decoded correctly')

抱歉,在我将 uploads:// 链接打印到控制台之前,它被转换为小写了,所以解码不起作用。使用正确的的大小写可以正常工作!

非常感谢您的快速帮助!!!

这是我在 Flutter 中用于完成此操作的代码:

import 'package:base_x/base_x.dart';
import 'package:hex/hex.dart';

String decodeUploadsLink(String encoded) {
  var base62Rev = BaseXCodec('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
  var decodedRev = base62Rev.decode(encoded);
  return HEX.encode(decodedRev);
}
5 个赞