PHP로 이 작업을 수행하는 데 관심이 있는 분들을 위해, tuupola의 base62라는 composer 라이브러리를 사용했습니다.
사용한 코드는 다음과 같습니다:
<?php
$base62 = new Tuupola\Base62(["characters" => Tuupola\Base62::INVERTED]);
/** 파일 확장자를 제외한 원래 파일 이름 설정 */
$s = "r3AYqESanERjladb4vBB7VsMBm6";
/** 디코딩, 16진수로 변환 */
$decoded = $base62->decode($s);
/** 예상 결과: bda2c513e1da04f7b4e99230851ea2aafeb8cc4e */
echo bin2hex($decoded);
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 메서드도 도움이 되지 않았습니다.
관심 있는 분들을 위해 해당 문제에 대한 codesandbox를 만들었습니다. 제 입력 문자열에 대한 최종 값은 1인데, 이는 잘못된 결과입니다 ;(
힌트를 주셔서 감사합니다, Richard. 하지만 그 아이디어를 적용해도 더 이상 진행이 되지 않습니다.
“Enable absolute upload links in raw views (routes)”(원시 뷰(라우트)에서 절대 업로드 링크 활성화)와 같은 설정을 추가하는 것이 좋은 기능이라고 생각되지 않을까요? 저희 경우에는 이를 적극 활용할 것입니다. 제 이해로는 업로드 URL 단축은 코드를 줄이기 위한 Discourse의 최적화 기능일 뿐이며, 마크다운과는 무관한 것 같습니다.