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!
Interessante. Non riesco a riprodurlo con Javascript. Poiché il tuo ultimo metodo è una conversione binary2hex, ma il risultato della decodifica base62 non è una rappresentazione binaria, per quanto ne capisco.
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;
}
Sfortunatamente, né i metodi bin2hex né dec2hex aiutano quando uso le tue stringhe di input.
Ho creato un codesandbox per questo problema, se qualcuno è interessato a giocarci. Il valore finale è 1 per la mia stringa di input, il che è sbagliato ;(
Dovresti essere in grado di usare binVal.toString(16) per ottenere il valore esadecimale.
Tuttavia, penso (!) che il risultato intermedio sia troppo grande per essere inserito in un intero normale.
Grazie per il suggerimento Richard, ma non sto andando avanti nemmeno con quell’idea.
Non so se non sarebbe una buona funzionalità avere un’impostazione del tipo “Abilita link di caricamento assoluti nelle visualizzazioni raw (route)”. La userei assolutamente nel nostro caso, perché, per quanto ne so, l’accorciamento degli URL di caricamento è solo un’ottimizzazione di discourse per ridurre il codice, giusto? Non è correlato a Markdown.
Qualcuno del team di Discourse può fornire un metodo JS in grado di ripristinare l’URL assoluto?
Sarebbe utile per la community, pensateci.
Non riesco a farlo ;(
Puoi convertire da base62 a hex, ma non sarai mai in grado di ricostruire completamente l’URL di caricamento senza un qualche tipo di interfaccia al database di Discourse. Il percorso completo per un caricamento dipende dall’id del caricamento, che non può essere determinato dall’URL breve.
Come ha detto @pfaffman, potremmo essere in grado di aiutarti di più se descrivi il tuo caso d’uso.