@upload λ°μ½λ μ΄ν°λ νμΌ μ
λ‘λλ₯Ό μ²λ¦¬νλ APIλ₯Ό μμ±ν©λλ€. Multipart form-data μμ²μ μλμΌλ‘ νμ±νκ³ , νμΌ κ°μ²΄λ₯Ό μ 곡ν©λλ€. @api λ°μ½λ μ΄ν° μμ΄λ λ
립μ μΌλ‘ μ¬μ©ν μ μμΌλ©°, μλμΌλ‘ POST λ©μλμ multipart ν΄λΌμ΄μΈνΈ(axios-multipart, tanstack-mutation-multipart)λ₯Ό μ€μ ν©λλ€.
μ λ‘λ λͺ¨λ
Sonamuλ λ κ°μ§ νμΌ μ λ‘λ λͺ¨λλ₯Ό μ 곡ν©λλ€:Buffer λͺ¨λ (κΈ°λ³Έ)
Buffer λͺ¨λλ νμΌμ λ©λͺ¨λ¦¬μ λ‘λν ν μ²λ¦¬ν©λλ€. MD5 ν΄μ κ³μ°, μ΄λ―Έμ§ 리μ¬μ΄μ§ λ± νμΌ λ΄μ©μ μ§μ λ€λ€μΌ ν λ μ¬μ©ν©λλ€.BufferedFile κ°μ²΄
Stream λͺ¨λ
Stream λͺ¨λλ νμΌμ λ©λͺ¨λ¦¬μ λ‘λνμ§ μκ³ μ¦μ μ μ₯μλ‘ μ€νΈλ¦¬λ°ν©λλ€. λμ©λ νμΌ μ λ‘λμ μ ν©ν©λλ€.UploadedFile κ°μ²΄
Stream λͺ¨λμμλ νμΌμ΄ μ΄λ―Έ μ μ₯μμ μ λ‘λλ μνλ‘ λ©νλ°μ΄ν°λ§ μ κ·Όν μ μμ΅λλ€.μ΅μ
guards
μ λ‘λ APIμ μ μ©ν κ°λλ₯Ό μ§μ ν©λλ€. μΈμ¦μ΄ νμν μ λ‘λ APIμμ μ¬μ©ν©λλ€.description
API μ€λͺ μ μ§μ ν©λλ€. μλ μμ±λλ API λ¬Έμμ νμλ©λλ€.limits
νμΌ μ λ‘λ μ νμ μ€μ ν©λλ€. Fastify multipartμlimits μ΅μ
μ κ·Έλλ‘ λ°μ΅λλ€.
- λ¨μΌ νμΌ (Buffer)
- λ€μ€ νμΌ (Buffer)
- Stream λͺ¨λ
νμΌ μ 보 νμΈ
νμΌ μ²λ¦¬ (Buffer λͺ¨λ)
Buffer μ κ·Ό
νμΌ μ μ₯
MD5 ν΄μ κ³μ°
μ€ν λ¦¬μ§ λλΌμ΄λ² μ¬μ©
Sonamuλ μ¬λ¬ μ€ν λ¦¬μ§ λλΌμ΄λ²λ₯Ό μ 곡ν©λλ€.μ€ν λ¦¬μ§ λλΌμ΄λ²λ
sonamu.config.tsμμ μ€μ ν©λλ€. 첫 λ²μ§Έ νλΌλ―Έν°λ‘ λμ€ν¬ μ΄λ¦μ
μ λ¬ν©λλ€.λ€λ₯Έ λ°μ½λ μ΄ν°μ ν¨κ» μ¬μ©
@transactionalκ³Ό ν¨κ»
ν΄λΌμ΄μΈνΈ μ¬μ© (Web)
Sonamuλ μλμΌλ‘ νμΌ μ λ‘λ ν΄λΌμ΄μΈνΈ μ½λλ₯Ό μμ±ν©λλ€.Axios (λ¨μΌ νμΌ)
Axios (μ¬λ¬ νμΌ)
React μμ
TanStack Query μμ
νμΌ κ²μ¦
MIME νμ κ²μ¦
νμΌ ν¬κΈ° κ²μ¦
νμΌ νμ₯μ κ²μ¦
μ΄λ―Έμ§ μ²λ¦¬
Sharp μ¬μ©
μ μ½μ¬ν
1. @api λ°μ½λ μ΄ν° μμ΄ λ 립 μ¬μ©
@uploadλ @api λ°μ½λ μ΄ν° μμ΄ λ
립μ μΌλ‘ μ¬μ©ν©λλ€:
2. httpMethodλ POST
@uploadλ₯Ό μ¬μ©νλ©΄ μλμΌλ‘ httpMethod: "POST"κ° μ€μ λ©λλ€.
3. clients μλ μ€μ
@uploadλ₯Ό μ¬μ©νλ©΄ clients μ΅μ
μ΄ μλμΌλ‘ ["axios-multipart", "tanstack-mutation-multipart"]λ‘ μ€μ λ©λλ€:
μμ λͺ¨μ
- νλ‘ν μ΄λ―Έμ§
- μ¬λ¬ νμΌ μ λ‘λ
- CSV νμΌ μ²λ¦¬
- MD5 ν΄μ κΈ°λ° μ μ₯
- Stream λͺ¨λ λμ©λ
μ°Έκ³ μ¬ν
@api λ°μ½λ μ΄ν°μμ κ΄κ³
@upload λ°μ½λ μ΄ν°λ λ΄λΆμ μΌλ‘ μλμΌλ‘ API μλν¬μΈνΈλ₯Ό μμ±ν©λλ€. λ°λΌμ @api λ°μ½λ μ΄ν°λ₯Ό λ³λλ‘ μ¬μ©ν νμκ° μμ΅λλ€.
μλ μ€μ λλ κ°:
httpMethod:"POST"(κ³ μ )clients:["axios-multipart", "tanstack-mutation-multipart"](multipart μ μ© ν΄λΌμ΄μΈνΈ)guards:@uploadμ΅μ μguardsκ°μ΄ APIμ μ λ¬λ¨description:@uploadμ΅μ μdescriptionκ°μ΄ APIμ μ λ¬λ¨
@uploadλ νμΌ μ
λ‘λμ μ΅μ νλ μ€μ μ μλμΌλ‘ μ μ©νλ―λ‘, @api λ°μ½λ μ΄ν°λ₯Ό μΆκ°λ‘ μ¬μ©ν
νμκ° μμ΅λλ€.λ€μ λ¨κ³
@api
API μλν¬μΈνΈ λ§λ€κΈ°
@transactional
νΈλμμ
μΌλ‘ μμ νκ² μ μ₯νκΈ°
Storage λλΌμ΄λ²
S3, Local λ± μ€ν λ¦¬μ§ μ¬μ©νκΈ°
νμΌ μ²λ¦¬
μ΄λ―Έμ§/λ¬Έμ μ²λ¦¬ κ°μ΄λ