서버의 디스크 공간을 사용하지 않는 신개?념 이미지 공유 api
import base64
import zstd
from fastapi import FastAPI, File, UploadFile, Request, HTTPException, Response
from fastapi.responses import PlainTextResponse
app = FastAPI()
def get_media_type_from_bytes(data: bytes) -> str:
if data.startswith(b'\x89PNG\r\n\x1a\n'): return 'image/png'
if data.startswith(b'\xff\xd8'): return 'image/jpeg'
if data.startswith(b'GIF87a') or data.startswith(b'GIF89a'): return 'image/gif'
if data.startswith(b'RIFF') and data[8:12] == b'WEBP': return 'image/webp'
return 'application/octet-stream'
@app.post("/upload",
summary="이미지를 압축 후 URL-Safe Base64로 인코딩",
response_class=PlainTextResponse)
async def upload_safe_image(request: Request, file: UploadFile = File(...)):
image_bytes = await file.read()
compressed_bytes = zstd.compress(image_bytes, 22)
safe_b64_bytes = base64.urlsafe_b64encode(compressed_bytes)
safe_string = safe_b64_bytes.decode("utf-8")
image_url = request.url_for('get_safe_image', safe_string=safe_string)
return PlainTextResponse(content=str(image_url))
@app.get("/i/{safe_string}",
summary="URL-Safe Base64 문자열을 디코딩/압축 해제하여 이미지 제공")
async def get_safe_image(safe_string: str):
try:
b64_bytes = safe_string.encode("utf-8")
compressed_bytes = base64.urlsafe_b64decode(b64_bytes)
decoded_image_bytes = zstd.decompress(compressed_bytes)
except (ValueError, TypeError, zstd.ZstdError) as e:
raise HTTPException(status_code=400, detail=f"잘못된 데이터 형식입니다: {e}")
media_type = get_media_type_from_bytes(decoded_image_bytes)
return Response(content=decoded_image_bytes, media_type=media_type)단점
1
-1
7 comments
aerfeargvaevaaerg
06/17/25 https://github.com/kern/filepizza
이런 것도 있음
comi-soft
06/18/25 Edited 06/18/25텍스트는 디스크 공간을 사용하는가?
binary는 호남선
06/19/25 이거 완전…
https://mdshare060114.web.app/
skajalf
06/20/25 이 이게 뭐임..?
LTS
06/30/25 base64 은근 마니 씀!
fhdrlsntm
07/02/25 ㄱㅅ
nananatsume2
11/27/25 대신 디비를 더 크게 잡아먹고, 디비 데이터 역시 디스크 용량을 잡아먹지. 오히려 파일 스토리지보단 디비가 더 비싼 자원이니까 걍 파일로 저장하는게 낫지 않으려나. 특히 게시물 검색 효율을 떨어뜨리는 문제가 있어서. 게다가 파일은 cdn으로 전송 효율을 올리기도 좋고.
일반
바이브 코딩이 개발능력 형성에 끼치는 영향
kimtaychon98
06/30
1574
2
바이브 코딩이 개발능력 형성에 끼치는 영향
일반
kimtaychon98
06/30 1574 2
일반
백준 대체싸이트 추천좀
hyeon111
05/23
1734
0
백준 대체싸이트 추천좀
일반
hyeon111
05/23 1734 0
일반
바이브코딩
라면올킬
05/02
1624
0
바이브코딩
일반
라면올킬
05/02 1624 0
일반
개발중인 사이트 있는데
hassan94
04/24
1550
1
개발중인 사이트 있는데
일반
hassan94
04/24 1550 1
PY
7JWM652865SYIOuzte2YuO2ZlA==
wef4r2
04/21
1710
2
7JWM652865SYIOuzte2YuO2ZlA==
PY
wef4r2
04/21 1710 2
일반
너무나도 조용한 서브...
이오치 마리
03/27
1555
0
너무나도 조용한 서브...
일반
이오치 마리
03/27 1555 0
일반
여기 좀 살려보면 안되나?
frzdk
02/15
1568
0
여기 좀 살려보면 안되나?
일반
frzdk
02/15 1568 0
일반
코딩 초보인데 이거 정상이지?
qqbbs
02/15
1698
1
코딩 초보인데 이거 정상이지?
일반
qqbbs
02/15 1698 1
일반
아카 크롤링하려면 얼마나 배워야해?
kang33
12/29/25
1766
0
아카 크롤링하려면 얼마나 배워야해?
일반
kang33
12/29/25 1766 0
JS
타입 스크립트는 적응이 안되네
ㅇㅇ
12/17/25
1383
0
타입 스크립트는 적응이 안되네
JS
ㅇㅇ
12/17/25 1383 0
일반
이사올랬는디 정전이네
gunsight
12/06/25
5621
0
이사올랬는디 정전이네
일반
gunsight
12/06/25 5621 0
일반
LLM이 정말로 위험한건 이거임
Rohthis_
12/05/25
2434
1
LLM이 정말로 위험한건 이거임
일반
Rohthis_
12/05/25 2434 1
PY
동적 변수 import 질문
보성녹차드링커
11/29/25
1467
1
동적 변수 import 질문
PY
보성녹차드링커
11/29/25 1467 1
일반
AI만능론의 진짜 위험성
nananatsume2
11/27/25
1970
1
AI만능론의 진짜 위험성
일반
nananatsume2
11/27/25 1970 1
C/C++
야매 C강의 2. 변수와 연산자
side-effect
11/03/25
1882
9
야매 C강의 2. 변수와 연산자
C/C++
side-effect
11/03/25 1882 9
C/C++
야매 C강의 1. 입출력
side-effect
11/02/25
1856
10
야매 C강의 1. 입출력
C/C++
side-effect
11/02/25 1856 10
일반
lua 배워보려는데 괜찮으려나
r1-ze
10/10/25
2530
0
lua 배워보려는데 괜찮으려나
일반
r1-ze
10/10/25 2530 0
일반
오랫만에 왔는데 섭 죽었네...
Ghost
09/17/25
2508
3
오랫만에 왔는데 섭 죽었네...
일반
Ghost
09/17/25 2508 3
일반
공항 예고 사건 진실
Ghost
08/21/25
10058
2
공항 예고 사건 진실
일반
Ghost
08/21/25 10058 2
일반
뮬바드 브라우저 코네 이미지 깨짐 해결 방법
Ghost
08/18/25
2176
0
뮬바드 브라우저 코네 이미지 깨짐 해결 방법
일반
Ghost
08/18/25 2176 0
일반
zig 쓰는 사람?
Ghost #0196f1ee
08/06/25
1816
0
zig 쓰는 사람?
일반
Ghost #0196f1ee
08/06/25 1816 0
기타언어
파이썬이랑 GDScript 문법 어느정도로 비슷함?
asdasdvwefcd
07/28/25
1680
1
파이썬이랑 GDScript 문법 어느정도로 비슷함?
기타언어
asdasdvwefcd
07/28/25 1680 1
일반
내년을 위해서 국비를 듣는데
sjaifo87498
07/27/25
2525
2
내년을 위해서 국비를 듣는데
일반
sjaifo87498
07/27/25 2525 2
일반
코딩 처음 시작하려는데
yaisibal1234
07/26/25
2322
0
코딩 처음 시작하려는데
일반
yaisibal1234
07/26/25 2322 0
C#
유니티 Singleton 1편
신군
07/08/25
3214
2
유니티 Singleton 1편
C#
신군
07/08/25 3214 2
일반
파이썬 배우다가 삼천포로 빠지는 느낌
shashasha
07/02/25
2427
0
파이썬 배우다가 삼천포로 빠지는 느낌
일반
shashasha
07/02/25 2427 0
PY
서버의 디스크 공간을 사용하지 않는 신개?념 이미지 공유 api
fastapi
06/17/25
3220
-1
서버의 디스크 공간을 사용하지 않는 신개?념 이미지 공유 api
PY
fastapi
06/17/25 3220 -1
C/C++
사칙연산이 없는 세계, 간단한 수식 연산기 ( 주의 )
comi-soft
06/14/25
3557
2
사칙연산이 없는 세계, 간단한 수식 연산기 ( 주의 )
C/C++
comi-soft
06/14/25 3557 2
C#
c#은 배우기 쉬운편임?
asdasdvwefcd
06/14/25
3171
0
c#은 배우기 쉬운편임?
C#
asdasdvwefcd
06/14/25 3171 0
📰
2000년대를 기점으로 나뉘는것
comi-soft
06/13/25
2971
1
2000년대를 기점으로 나뉘는것
📰
comi-soft
06/13/25 2971 1
s/turtleneckers
• 1,620 subscribers프로그래밍 서브입니다. 잡담, 문제 해결, 코드 리뷰(공지 필독)
Created 05/17/2025, 14:30:39
Rules
- 1. 기본 방임주의(절대 귀찮아서 그런 것 맞음)
- 2. 누가봐도 밴 당할법한 글 올리면 자를꺼임
- 3. 카테고리 지켜주면 좋겠지만 안지키면 안타까운거고