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. Não consigo reproduzir isso com Javascript. Porque seu último método é uma conversão binária para hexadecimal, mas o resultado da decodificação base62 não é uma representação binária, pelo que entendi.
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;
}
Infelizmente, nem os métodos bin2hex nem dec2hex ajudam quando uso suas strings de entrada.
Criei um codesandbox para esse problema, caso alguém esteja interessado em brincar com ele. O valor final é 1 para minha string de entrada, o que está errado ;(
Você deve ser capaz de usar binVal.toString(16) para obter o valor hexadecimal.
No entanto, acho(!) que o resultado intermediário é muito grande para caber em um inteiro normal.
Obrigado pela dica, Richard, mas não estou avançando nem com essa ideia.
Não sei se não seria um bom recurso ter uma configuração do tipo “Habilitar links de upload absolutos em visualizações brutas (rotas)”. Eu usaria isso totalmente no nosso caso - porque, pelo que entendi, o encurtamento de URL de upload é realmente apenas uma otimização do Discourse para reduzir o código, certo? Não está relacionado ao Markdown.
Você pode converter de base62 para hex, mas nunca será capaz de reconstruir totalmente a URL de upload sem algum tipo de interface para o banco de dados do Discourse. O caminho completo para um upload depende do id do upload, que não pode ser determinado a partir da URL curta.
Como o @pfaffman disse, podemos ajudar mais se você descrever seu caso de uso.