Je peux très bien être en train de chercher midi à quatorze heures, alors désolé si c’est le cas — mais tout conseil est le bienvenu !
Il y a quelques sujets sur notre site Discourse qui sont affichés en partie sur notre site principal. Comme la version « cuisinée » d’un message contient tout le HTML nécessaire à la lightbox, ce que nous ne souhaitons pas voir sur le site principal, je travaille avec la version brute du message.
Un élément qui me pose problème concerne les URL de fichiers uploadés. Comment puis-je convertir une URL upload:// en une URL complète ? J’ai essayé de chercher et j’ai trouvé des références à SHA1 et Base62, mais malgré tout, je n’arrive pas à obtenir l’URL complète.
Comme je l’ai dit, il est possible que je regarde de travers, ou qu’il existe (probablement) un moyen plus simple de faire ces choses, donc tout conseil est le bienvenu !
Intéressant. Je ne parviens pas à reproduire cela avec Javascript. Parce que votre dernière méthode est une conversion binaire vers hexadécimal, mais le résultat du décodage base62 n’est pas une représentation binaire d’après ce que je comprends.
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;
}
Malheureusement, ni les méthodes bin2hex ni dec2hex n’aident lorsque j’utilise vos chaînes d’entrée.
J’ai créé un codesandbox pour ce problème si quelqu’un est intéressé à jouer avec. La valeur finale est 1 pour ma chaîne d’entrée, ce qui est faux ;(
Vous devriez pouvoir faire binVal.toString(16) pour obtenir la valeur hexadécimale.
Cependant, je pense (!) que le résultat intermédiaire est trop grand pour tenir dans un entier normal.
Merci pour l’indice Richard, mais je n’avance pas plus loin, même avec cette idée.
Je ne sais pas si ce ne serait pas une bonne fonctionnalité d’avoir un réglage du genre “Activer les liens de téléchargement absolus dans les vues brutes (routes)”. Je l’utiliserais totalement dans notre cas - car, d’après ce que je comprends, le raccourcissement des URL de téléchargement n’est vraiment qu’une optimisation de Discourse pour réduire le code, n’est-ce pas ? Ce n’est pas lié au Markdown.
Vous pouvez convertir de la base 62 en hexadécimal, mais vous ne pourrez jamais reconstruire entièrement l’URL de téléversement sans une sorte d’interface à la base de données de Discourse. Le chemin complet vers un téléversement dépend de l’id du téléversement, qui ne peut pas être déterminé à partir de l’URL courte.
Comme l’a dit @pfaffman, nous pourrions être en mesure de vous aider davantage si vous décrivez votre cas d’utilisation.