I may be barking up the wrong tree here, so apologies if I am - but any pointers very much welcome!
There are some threads in our Discourse site which are displayed in part on our main website. Because the cooked version of a post contains all the HTML for the lightbox, which we don’t want on the main site, I’m working with the raw version of a post.
One thing that’s tripping me up is the file upload URLs. How can I convert an upload:// URL to a full URL? I’ve tried searching and come across SHA1 and Base62, but apart from that, no matter what I try, I can’t get the full URL.
As I said, I may looking at the wrong thing, or there’s (likely) to be an easier way to these things, so any advice welcome!
مثير للاهتمام. لا يمكنني تكرار هذا باستخدام جافاسكريبت. لأن طريقتك الأخيرة هي تحويل binary2hex ولكن النتيجة من فك تشفير base62 ليست تمثيلًا ثنائيًا مما أفهمه.
function fromBase62(s) {
var digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result = 0;
for (var i = 0; i < s.length; i++) {
var p = digits.indexOf(s[i]);
if (p < 0) {
return NaN;
}
result += p * Math.pow(digits.length, s.length - i - 1);
}
return result;
}
للأسف، لا تساعد طرق bin2hex ولا dec2hex، عندما أستخدم سلاسل الإدخال الخاصة بك.
لقد أنشأت صندوق رموز لهذه المشكلة إذا كان شخص ما مهتمًا باللعب بها. القيمة النهائية هي 1 لسلسلة الإدخال الخاصة بي وهو أمر خاطئ ؛ (
يجب أن تكون قادرًا على استخدام binVal.toString(16) للحصول على القيمة السداسية عشرية.
ومع ذلك، أعتقد (!) أن النتيجة الوسيطة كبيرة جدًا بحيث لا تتناسب مع عدد صحيح عادي.
شكراً على التلميح يا ريتشارد، لكنني لم أتقدم أكثر حتى مع هذه الفكرة.
لا أعرف، ألن يكون من الجيد وجود إعداد مثل “تمكين روابط التحميل المطلقة في طرق العرض الخام (المسارات)”. سأستخدم ذلك بالتأكيد في حالتنا - لأنه، حسب فهمي، فإن تقصير عنوان URL للتحميل هو مجرد تحسينات في الخطاب لتقليل التعليمات البرمجية؟ لا علاقة له بـ Markdown.
لن تتمكن أبدًا من إعادة بناء عنوان URL للتحميل بالكامل دون نوع من الواجهة لقاعدة بيانات Discourse. المسار الكامل للتحميل يعتمد على id التحميل، والذي لا يمكن تحديده من عنوان URL القصير.
كما قال @pfaffman، قد نتمكن من المساعدة أكثر إذا وصفت حالة الاستخدام الخاصة بك.