# Multipart

43개의 포스트
post-thumbnail

안드로이드 스튜디오 이미지 서버로 전송하기(Retropit2 multipart사용)

이제 이미지를 갤러리에 가져와 적용하는 것 까지 했으니 그 이미지를 서버로 부터 전송시키는 작업 또한 필요했다. 우선 서버 API를 살펴보았다. 요청 API는 다음과 같다. curl --location '서버 주소/user/image' \ --header 'Authorization: Bearer 토큰 정보' \ --form 'file=@"/이미지 경로"' 그래서 Retrofit인터페이스를 다음과 같이 구현하였다. 여기서 쓰인 multipart는 서버로부터 파일을 보낼 때 쓰인다고 한다. 현재 이미지 파일을 서버로 보내야 하니 사용했다. 요거는 서버로 부터 요청을 보내고 응답을 받는 부분이다. ![](https://velog.velcdn.com/images/praoo800/post/525599

2023년 8월 2일
·
0개의 댓글
·
post-thumbnail

File Handling

정적 파일 사용자에게 변환(변함) 없이 전달되는 파일을 말한다. static content들을 두는 곳 (CSS, js, 이미지 …) templates thymeleaf의 파일들을 두는 곳 첨부해둔 정적 파일은 Spring Boot의 기본 동작으로, / 로 들어온 요청에 대해 정적 파일 응답을 보내준다 http://localhost:8080/image.jpg http://localhost:8080/scripts.js http://localhost:8080/styles.css 정적 파일을 제공하는 경로 변경 /static/ 으로 시작하는 요청에 대해 정적 파일 서빙 application.yaml Multipart -

2023년 6월 24일
·
0개의 댓글
·

multipart/form-data

accept 이미지 파일 확장자만 선택 허용 동영상 파일 확장자만 선택 허용 pdf파일만 선택 허용 >### enctype form 태그가 데이터를 서버로 제출할 때 데이터의 인코딩 형식을 지정하는 속성 >1) application/x-www-form-urlencoded 모든 문자를 서버로 제출하기 전에 인코딩 (모든 데이터가 문자) (form태그 기본값) >2) multipart/form-data : 제출할 때 인코딩을 하지 않음 -> 모든 데이터가 원본 형태를 유지(파일이 파일상태로 서버로 제출) (주의) multipart/form-data 로 설정 시 method는 무조건 POST

2023년 4월 19일
·
0개의 댓글
·
post-thumbnail

NestJS - Multipart: Boundary not found Error

프로젝트에서 클라이언트로부터 이미지를 받아 저장하는 과정에서 해당 오류가 생겼다. 처음 겪는 오류라 해결하는 과정에서 애를 먹었던 것 같다. 문제 React에서 서버 쪽으로 image를 보내는데 해당 에러가 발생했다. 인터셉터를 통해 request 헤더의 로그를 찍어보니 Postman으로 요청을 보낼 땐 boundary가 자동 생성되어 잘 전달되고, 이미지 또한 잘 저장되었다. 그러나 client단에서 요청을 보내면 boundary가 생성되어 전달되지 않아서, 서버 측에서 해당 요청에 대한 데이터 구분을 못하는 상황 <img src="https://velog.velcdn.com/images/cxxxtxxyxx/post/b1

2023년 3월 27일
·
0개의 댓글
·

[Java] Multipart, MultipartFile, multipart/form-data

Multipart 웹 클라이언트가 서버에게 파일을 업로드할 때, http 프로토콜의 body 부분에 파일정보를 담아서 전송 파일을 한번에 여러개 전송을 하면 body 부분에 파일이 여러개의 부분으로 연결되어 전송된다 interface MultipartFile multipart.transferTo(File(경로) dest(대상)) : MultipartFile 객체에서 추출한 InputStream을 이용해 파일 시스템에 파일을 저장 : 대상 파일을 업로드할 위치를 File 객체로 지정하고, 이 파일 객체를 매개변수로 전달 Multipart/form-data 파일 업로드를 구현할 때, 클라이언트가 웹브라우저라면 을 통해서 파일을 등록해서 전송 웹 브라우저가 보내는 HTTP 메시지는 Content-Type 속성이 multipart/form-data로 지정되고 정해진 형식에 따라 메시지를 인코딩하여 전송 이를 처리하기 위한 서버는

2023년 3월 16일
·
0개의 댓글
·
post-thumbnail

React + TypeScript 이미지 업로드 적용기

반갑다. 첫 velog 글이다. 암튼, 어제로부터(2023/3/13) 딱 한달 전 나는 한 프로젝트를 v2로 만들게 되었다. 그래서 v2를 만들던 중 이미지 업로드 기능을 구현해야했다. 예전에 해커톤에서도 이미지 업로드를 해본 경험이 있어서 한번 해봤는데, 내가 짜본 이미지 업로드 방식이 좀 달랐다. 무슨 방식이냐고?? 간단하다. 이미지들을 FormData에 담고 서버로 보내면 서버가 이미지 url을 보내준다. 그리고 다시 그 url과 글 등등을 서버로 보내는 방식이다. 그래서 내가 훗날 이미지 업로드하는 법을 까먹게 된다면 이 글을 통해 참고 할려고 쓰게되었다. 암튼 아래 이미지 업로드 코드를 보면 이미지를 길이만큼 반복문을 돌려 FormData에 담는다. 비동기로

2023년 3월 14일
·
1개의 댓글
·
post-thumbnail

파일 업로드 - Multipart

HTTP Multipart Multipart란 클라이언트에서 서버로 파일을 보낼 때 사용하는 Content Type이다. 클라이언트에서 보내는 요청을 찬찬히 뜯어보면 boundary=-----XXX 로 되어있는 것을 볼 수 있는데, 이는 각 Form 데이터의 경계를 나타내며, 이 경계를 기준으로 각각의 데이터를 표기하여 여러 타입의 데이터를 섞이지 않고 전달하는 것을 목적으로 만들어진 데이터 전송법이다. username과 age처럼 일반적인 데이터와 달리, 파일의 경우 Content-Type과 바이너리 데이터를 전송되는 것을 확인할 수 있다. HTTP 요청은 모두 문자열로 이루어지는데, 서버는 해당 요청을 받아 HTTP 스펙에 맞춰 이를 변환하는 작업을 진행해야한다. 만약 백엔드 프로그래

2023년 2월 22일
·
0개의 댓글
·

[Fix] Android 파일 업로드 (파일 전송) 시 API 호출에 실패할 때

❌ 증상 Image Picker로 고른 파일을 업로드 하려고 했으나, iOS는 정상적으로 API를 호출하는 반면 Android는 API 호출 전에 예외가 발생 (Status Code 0) 🕵️‍♂️ 과정 Image Picker에서 넘어온 해당 파일의 경로는 모두 file://{path}로 받음. Metro 콘솔 상 특별히 찍히는 로그가 없어, 플리퍼로 네이티브 레벨 로그를 확인. 확인 결과 위 로그가 찍혀있는 것을 확인하였고, 헤더에가 제대로 들어가 있는지 확인 💻 해결 바이너리 코드(base64)가 폼 데이터 형태로 API에 전송될 경우에 헤더가 로 할당되어있어야 한다. 현재 다루는 프로젝트에서는 Axios를 싱글톤 형태로 사용하기 때문에 body가 form data일 경우 로직을 추가하여 헤더를 정상적으로 할당해주었다.

2023년 2월 21일
·
0개의 댓글
·
post-thumbnail

Spring - 파일 전송(multipart), 파일 업로드, 파일 저장

HTML Form Data 전송 방식 1) application/x-www-urlencoded HTML 폼 데이터를 전송하는 가장 기본적인 방법 데이터를 String 형태로 전송 enctype 옵션이 없을 경우, default로 해당 전송방식을 헤더에 추가한다. 전송할 데이터를 쿼리 파라미터 형식으로 HTML Body에 넣어 전송 해당 방식은 문자를 전송하는 방식이기 때문에, 파일 전송은 불가능하다.(username=kim&age=20) 2) multipart/form-data 전송 방식 여

2023년 2월 16일
·
0개의 댓글
·

fetch api의 multipart/form-data에 대해 알아보자

사건 프로젝트 진행 중 fetch api를 사용하여 multipart/form-data를 보내는데 서버에서 제대로 받지 못하는 이슈(자바/스프링에서 boundary exception이 발생)가 생겨 fetch에 대해 살짝 공부를 하게되었다. excetipn 문구는 다음과 같다. > The request was rejected because no multipart boundary was found in springboot 게시판 등록 시 이미지를 첨부하여 저장하기 위해 파라미터를 form-data를 생성하여 넣어주고 header의 content-type을 multipart/form-data로 설정하여 보냈는데 서버에서 500 에러가 발생 구글 서칭을 해보니 FormData 객체의 Default Content-Type이 multipart/form-data이고, 웹브라우저에서 파일 전송 시 자동으로 boundary 값을 붙여주기 때문에 프론트엔드에서는 따로 Content-Typ

2023년 1월 2일
·
0개의 댓글
·

게시판 다중 첨부파일 등록

1. jsp input 태그에서 multiple을 지정해주면 다중 첨부파일이 가능하다. 2. Controller 다중 첨부파일 이므로 서버단으로 받아올 때 List로 받아와야 한다. 3. Service 다중파일 이므로 파일이 저장될 이름이나, 저장할 파일의 객체를 for문을 이용하여 처리해야 한다.

2022년 12월 5일
·
0개의 댓글
·
post-thumbnail

FileUpload Multipart 설정 (Tomcat)

✔ Multipart 파일 업로드를 위한 프로젝트 설정 및 Tomcat 설정 1. maven dependency 주입 pom.xml 2. MultipartFilter 선언 및 url-pattern 지정 프로젝트/src/webapp/WEB-INF/web.xml 3. MultipartResolver bean 주입 dispatcher-servlet.xml ※ 파일 업로드 시 오류 발생 오류내용 오류가 난 이유 Tomcat이 multipart/form-data 요청 본문을 분석하지 못하여 경로를 찾지 못함 4. tomcat - context.xml 5. tomcat - web.xml 6. tomcat - server.xml Post 전송 시 데이터 크기 최대 사이즈 지정 > maxPostSize="52428800" // 50MB maxPostSize="-1" // 디

2022년 11월 4일
·
0개의 댓글
·
post-thumbnail

Axios로 formData() 이용해 file 올리기(이미지 업로드)

이미지 업로드 테스트를 하던 도중 발생했던 오류를 해결한 기쁜맘에 오랜만에 블로그에 글을 쓴다! 현재 나는 회사 s3 서버에 이미지 업로드 테스트를 진행중이었고 multipart/form-data 형태로 파일을 넘겨주어야 했기 때문에 여러 시도를 해본 끝에 해결하였다 ✏️ form data 로 file 전송하기 충격 그차체 였던 방식 post 요청할때 파라미터로 값을 넣어주지 않아도 알아서 요청이 가는것을 보며 충격을 받았던 방법이다 file만 요청을 보내는 경우에는 너무 유용하게 쓰일 방법이다 하지만 나는 앞으로 프로젝트를 진행하다보면 form 안에 파일 말고도 다른 값들을 넣어 보내야하는 경우가 많아지기 때문에 함수로 분리를 시도했다 ✏️ 함수로 분리하여 form data 전송하기 이 코드를 위해 하루를 고생했던가,,, CORS 에러도해결했고 데이터도 무사히 전송된다!! ![](https://velog.velcdn.com/images/wony_yo

2022년 10월 14일
·
0개의 댓글
·
post-thumbnail

파일 업로드

파일이 전송되는 방식 는 일반적으로 HTML Form을 통해 이루어진다. HTML Form 전송 방식에는 두 가지가 있다. 1. 파일을 업로드하려면 문자가 아니라 binary 데이터를 전송해야 하는데, 문자를 전송하는 이 방식으로는 파일 전송이 어렵다. 이 문제를 해결하기 위해 HTTP는 multipart/form-data 방식을 제공한다. 2. 이 방식은 다른 종류의 여러 파일과 폼의 내용(문자)을 함께 전송할 수 있다. 이 방식을 사용하려면 Form 태그에 를 지정해줘야 한다. > ![](https://velog.velcdn.com/images/bagt/post/20472dcf-12f0-4a1a-9f76-b2204fbaefa6/ima

2022년 9월 14일
·
0개의 댓글
·
post-thumbnail

S3 멀티파트 업로드 및 유의사항

사전지식 원본 파일이 대용량일 경우 파트를 나눠서 업로드 방법에 대해 안내합니다. 유의사항 멀티파트 업로드를 진행하는 경우에 아래와 같은 특이사항이 있습니다. 일부 파트만 s3에 업로드 하는 경우에는 해당 객체가 s3에 표시되지 않습니다. 표시되지 않는 문제로 인해 불필요한 비용이 발생할 수 있기 때문에 파트에 대한 확인이 필요합니다. ​ 글의 목적 cli를 통해 멀티파트 업로드 작업을 진행하는 방법에 대해 안내합니다. 작업 방법 아래의 명령어를 통해 하나의 원본 파일을 여러개의 파트로 분할합니다. 4개의 파트로 분할하며 C0031.MP4라는 파일명 뒤에 숫자가 붙는 옵션입니다. C0031.MP4라는 파일에 대해 C0031.MP400부터 C0031.MP403까지 파일이 생성됩니다. 멀티파트 업로드를 시작하고 연관된 업로드 ID를 검색하기 위해 아래의 명령어를 실행합니다. 아래의 명령어를 통해 파트를 하나씩 업로드합니다

2022년 9월 2일
·
0개의 댓글
·

retrofit multipart로 이미지 전송하기

공식문서 참고블로그 참고블로그2 service >JvmSuppressWildcards란? > multiPart란? 웹 클라이언트가 요청을 보낼 때, http 프로토콜의 바디 부분에 데이터를 여러 부분으로 나눠서 보내는 것. 파일을 한방에 바디에 넣어 보내기엔 너무 무리 이기 때문에, 파일을 잘게 나눠서 보낸다고 이해하면 된다. >Requestbody란? multipart 통신

2022년 8월 28일
·
0개의 댓글
·

[Spring] Multipart 요청 처리

폼으로 데이터를 전송할 때 파일도 함께 보낸다면 파일은 바이너리 데이터 전송이라 Content-type을 multipart/form-data로 지정 해주어야 한다. MultipartHttpServletRequest HttpServletRequest 객체 안에 포함된 파라미터 요청 중에서 File 데이터를 추출할 때에는 MultipartHttpServletRequest와 MultipartFile을 이용해서 추출할 수 있다. requestParam 요청 파라미터 타입 중 MultipartFile 타입에 해당하는 한 가지를 골라서 file 데이터를 다룰 수 있다. requestParam 형식 @RequestParam("가져올 데이터의 이름") 데이터 타입 "변수 이름 requestPart file 객체와 VO 객체를 한번에 받을 때 사용한다. 하나의 api에서 MediaType을 지정하여 Json과 MultipartFile을 한번에 전달 받을

2022년 7월 4일
·
0개의 댓글
·

7. 파일 업로드

웹 브라우저에서 서버로 파일을 전송하여 서버에 저장하는 것 파일 업로드를 위한 jsp 페이지 웹 페이지에서 서버로 업로드되는 파일 자체만 다루는 클래스 cos.jar 오픈 라이브러리를 이용해 import하여 사용 MultipartRequest 생성자의 매개변수 |매개변수|설명| |:---:|:---:| |request|Request 내장 객체 설정| |saveDirectory|서버의 파일 저장 경로를 설정| |maxPostSize|파일의 최대 크기를 설정| |encoding|인코딩 유형 설정| |policy|파일명 변경정책 설정| 파일 업로드 패키지인 Commons-FileUpload는 서버의 메모리상에서 파일 처리가 가능하도록 지원 commons-fileupload.far, commons-io.jar 오픈

2022년 5월 31일
·
0개의 댓글
·

[Spring]클래스에 Serializable을 구현하는 이유

문득 공부하다가 의문점이 들었습니다. 파일업로드하는데 DTO에 왜 Serializable 을 구현하는 이유가 뭘까? implements Serializable에 대한 의문점? 자바책에는 객체를 파일에 저장하거나 파일에서 꺼내오기 위해서 또는 객체를 네트워크를 통해 전송하기 위해서는 미리 객체를 직렬화해야 한다고 되어 있습니다. 웹 소스를 보면 서비스 객체나 컨트롤러 객체는 직렬화 하지 않는데,* 도메인 객체(DB에서 읽어온 내용을 담는 객체)는 꼭 implement Serializable로 직렬화*를 하는데 이유가 궁금했습니다. 결론 서버가 다중화되어 있고 세션 클러스터링을 통해 세션관리를 하는 환경에서 도메인 객체가 세션에 저장이 될 때 도메인 객체에 Serializable 인터페이스를 구현해야 정상적으로 세션에 저장하고 꺼내올 수 있기 때문입니다. **도매인 객체가 세션에 저장되지 않는 단순한 데이터 집합이고 컨트롤러에서 생성

2022년 3월 28일
·
0개의 댓글
·

영화/리뷰 프로젝트 적용하기-(5)

Ajax로 영화 리뷰 처리 사용자는 버튼을 클릭해서 영화 리뷰를 할 수 있는 모달창을 보게 됩니다. 모달창에는 별점(점수)을 줄 수 있도록 화면을 구성해서 회원의 아이디와 리뷰 점수,내용을 입력하게 합니다. 영화 리뷰가 등록되면 영화 자체의 리뷰 개수와 평균이 변경되었기 때문에 아에 현재 URL을 다시 호출해서 갱신하는 방법으로 처리합니다. 따라서 영화 리뷰가 하나 등록 되면 리뷰의 개수와 평균 평점도 변경됩니다. ReviewServie와 ReviewDTO Review 엔티티 클래스는 존재하므로 이에 맞는 ReviewDTO를 구성합니다. Review 엔티티 클래스는 Movie와 Member를 참조하는 구성으로 되어 있으므로, 문자열이나 번호를 참조하는 형태로 변경됩니다. ReviewDTO는 화면에 필요한 모든 내용을 가지고 있어야 하기 때문에 회원의 아이디/닉네임/이메일도 같이 처리할 수 있도록 설계합니다. ReviewService

2022년 3월 22일
·
0개의 댓글
·