# 업로드 짧은 URL 조회 및 생성

**URL:** https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412
**Category:** Development
**Created:** [4월 25, 2025, 8:06오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412 "2025-04-25T08:06:38Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 25, 2025, 8:06오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/1 "2025-04-25T08:06:38Z")

</div>

게시글에 다음과 같이 표시됩니다:

`![img-MAVMAbkLhcg3sooqMLUyKIhT](upload://>>>>>yygWIAKKT974aRWzlyDof2O82bL<<<<<.jpeg)`

이를 다음 값(그리고 그 반대)으로 매핑하는 방법은 무엇인가요:

`"//127.0.0.1:4200/uploads/default/original/1X/abcafdf0e1d9262d515075420e4d940718796a5d.jpeg"`

이것은 `Upload`의 `url` 속성으로 나타납니다.

?

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [4월 25, 2025, 8:09오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/2 "2025-04-25T08:09:11Z")

</div>

이 함수를 사용해야 합니다:

[https://github.com/discourse/discourse/blob/c38b5094da44554f2ffdee7e37eba95fa9ce461/app/models/upload.rb#L455C3-L457C6](https://github.com/discourse/discourse/blob/c38b5094da44554f2ffdee7e37eba95fa9ce461/app/models/upload.rb#L455C3-L457C6)

그 다음 데이터베이스에서 SHA1를 조회하여 업로드 레코드를 찾으면 됩니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 25, 2025, 8:09오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/3 "2025-04-25T08:09:51Z")

</div>

아, 그게 SHA1이었군요. 아, 어이없다!

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [4월 25, 2025, 8:12오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/4 "2025-04-25T08:12:11Z")

</div>

네, 짧은 URL과 일반 URL 모두에 SHA1이 포함되어 있습니다.

차이는 긴 URL이 데이터베이스의 것과 일치하는 원래의 16진수 인코딩된 버전을 사용한다는 점입니다. `upload://` "짧은 URL"은 동일한 해시값의 base62 표현이므로 더 적은 문자를 사용합니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 25, 2025, 8:13오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/5 "2025-04-25T08:13:33Z")

</div>

죄송합니다, 이제 이해했습니다.

즉, 다음이 있는 거죠:

- 게시물에 있는 `short-url`
- 업로드할 원래의 긴 `url`
- 업로드 과정에서 생성된 `SHA1`

그리고 당신은 `short-url`로부터 `url`을 찾는 방법을 알려주셨네요.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 25, 2025, 8:20오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/6 "2025-04-25T08:20:20Z")

</div>

죄송합니다. 아직 이른 시간이라, 만약 제 목표가 `short-url`을 \_생성\_하는 것이라면, SHA1을 base62로 변환해야 하는 건가요?

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [4월 25, 2025, 8:25오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/7 "2025-04-25T08:25:43Z")

</div>

어디서 이 작업을 수행하고 계신가요? Rails 앱인가요?

그렇다면 `upload.short_url`과 `upload.url`을 사용하여 URL을 생성할 수 있습니다.

먼저 업로드 레코드를 찾는 방법은 다음과 같습니다:

```ruby
sha1 = Upload.sha1_from_long_url(...)
# 또는
sha1 = Upload.sha1_from_short_url(...)

# 그리고

upload = Upload.find_by(sha1: sha1)

```

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 25, 2025, 8:27오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/8 "2025-04-25T08:27:17Z")

</div>

네, Rails입니다. 백엔드에서 업로드를 하고 있어요.

OMGoodness:

`Upload.last.short_url`

`"upload://fkO7C9M7SLRhXjEiFTOSUJIdCgJ.jpeg"` 🎉

David, 정말 죄송합니다! 그걸 완전히 놓치고 있었어요!!

적어도 이 토픽 덕분에 관심 있는 분들에게 이 모든 것이 명확해졌네요.

다양한 정보 감사합니다.

> <https://github.com/discourse/discourse/blob/b2c4d430b970350af4193a759fb9010383b019ea/app/models/upload.rb#L213>

> <https://github.com/discourse/discourse/blob/b2c4d430b970350af4193a759fb9010383b019ea/app/models/upload.rb#L666>

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [5월 25, 2025, 8:27오전 UTC](https://meta.discourse.org/t/looking-up-and-generating-upload-short-urls/363412/9 "2025-05-25T08:27:40Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
