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!
Interesante. No puedo reproducir esto con Javascript. Porque tu último método es una conversión binaria a hexadecimal, pero el resultado de la decodificación base62 no es una representación binaria, según entiendo.
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;
}
Desafortunadamente, ni los métodos bin2hex ni dec2hex ayudan, cuando uso tus cadenas de entrada.
Creé un codesandbox para ese problema si alguien está interesado en jugar con él. El valor final es 1 para mi cadena de entrada, lo cual es incorrecto ;(.
Deberías poder usar binVal.toString(16) para obtener el valor hexadecimal. Sin embargo, ¡creo(!) que el resultado intermedio es demasiado grande para caber en un entero normal.
Gracias por la pista Richard, pero ni siquiera con esa idea estoy avanzando.
No sé, ¿no sería una buena característica tener una configuración del tipo “Habilitar enlaces de carga absolutos en vistas sin procesar (rutas)”? Yo la usaría totalmente en nuestro caso, porque, según entiendo, el acortamiento de URL de carga es solo una optimización de Discourse para reducir código, ¿verdad? No está relacionado con Markdown.
Puedes convertir de base62 a hexadecimal, pero nunca podrás reconstruir completamente la URL de carga sin algún tipo de interfaz a la base de datos de Discourse. La ruta completa a una carga depende del id de la carga, que no se puede determinar a partir de la URL corta.
Como dijo @pfaffman, podríamos ayudarte más si describes tu caso de uso.