كيف تحصل على عنوان URL حقيقي لتحميل منشور؟

أهلاً بك!
لقد بحثت في كل مكان على الإنترنت عن هذا الأمر ولكن لم أوفق، لذا لجأت إلى طرح السؤال هنا.

دعني أضيف بعض السياق، نحن نقوم بإنشاء واجهة أمامية مخصصة باستخدام واجهة برمجة تطبيقات مستخدم Discourse. حيث كنت أحاول عرض محتوى منشور خام، ولكن يتم تمرير الصور هكذا: uploads://<id>.png بحيث لا يمكن للمتصفح جلبها.

هل هناك أي طريقة للحصول على عنوان URL الحقيقي عبر واجهة برمجة التطبيقات؟ مثل https://custom.discourse.org/uploads/<id>.png أو شيء من هذا القبيل؟

تحياتي!

إعجاب واحد (1)

انظر Converting short upload URLs to full URLs

6 إعجابات

شكراً جزيلاً، سألقي نظرة!

إعجاب واحد (1)

مرحباً @RGJ لقد جربت للتو مثال الكود بلغة بايثون، المذكور هنا: 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:// إلى وحدة التحكم، لذلك لم ينجح فك التشفير. استخدام الحالة الصحيحة يعمل!

شكراً جزيلاً على المساعدة السريعة!!!

إليك الرمز الذي استخدمته في فلاتر لتحقيق ذلك:

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 إعجابات