을 받아들입니다.
(210)
일반적인 단계로 다음과 같습니다,
- 구조의 FileItemFactory
- 구조의 ServletFileUpload 그것을 공장을 통과
- 통화 ServletFileUpload.parseRequest (요청)
이 답변이 논리 2 & 3 대체 서블릿과 무관하게 ServletFileUpload (서블릿 전용)와 조상 인 FileUpload (절대 경로 이름으로 파일 위치를 제어)를 사용하지 않습니다. 참고 : (3)은 보통 HTTP 요청 매개 변수를 검사하여 FileItemFactory.createItem에 전달되는 하위 수준 매개 변수를 결정합니다. 이러한 매개 변수는 수동으로 제공되고 정보 용 메타 데이터로만 사용됩니다. 2 & 3 체
- 은 (FileItemFactory.createItem 통해 - 수동 일반적 ServletFileUpload.upload()를 통해 결정된 낮은 레벨 파라미터 제공해야) FileItem를 구성 절대적으로 특정 파일
- 쓰기,
- 경로
은의 MultipartFile
아래에 제공된 요청 코드를 통해 파일을 업로드 할 수 있습니다. 마지막에는 Servlet 업로드와 공유되는 공통 코드를 호출합니다.
// Initialise Apache Commons FileItemFactory for API use only
FileItemFactory fif = new DiskFileItemFactory(sizeThreshold, repositoryBaseDirFile);
// Create Apache Commons FileItem & write file at fullFilePathString into it
FileItem fi = fif.createItem(fieldName, contentType, isFormField, fileName);
fi.write(new java.io.File(new java.net.URI(fullFilePathString));
// Convert FileItem to Spring wrapper: CommonsMultipartFile
org.springframework.web.multipart.MultipartFile mf = new CommonsMultipartFile(fi);
// From here, reuse the same code as the servlet upload. Operate only upon
// Spring MultipartFile, but not ServletFileUpload, FileItemFactory etc...
파라미터 :
- fullFilePathString : 절대 경로 (문자열로) 파일
- fieldName에
업로드한다 : 폼 필드 이름
을
(Be 바이트 메모리 사이즈 임계치 (일반적 작은 파일은 전용 파일 메모리를 이용하여 업로드 : ServletFileUpload &는 FileUpload는 오직 다음가 메타 데이터 필드를 회피 등)
- sizeThreshhold 처리를 제어하는데 사용되지 않는 원인 큰 파일은 디스크를 통해 업로드되지만이 논리에는 항상 디스크를 통해 업로드되는 파일이 있습니다). 기본값은 DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD입니다.
- repositoryBaseDireFile는 : 필드의 콘텐츠 형식 (MIME 타입)에 : 일반적으로 (파일 형식으로) 파일 업로드 '임시'디렉토리하지만이 논리 파일
- contentType이을 업로드 할 절대 경로를 사용 양식 (다중 부분 양식 필드가 아닌 경우 null)
- isFormField : 일반 양식 필드 인 경우 'true'이고, 그렇지 않은 경우 여러 부분 필드 인 경우 false입니다.
- fileName : 파일 이름 (일반적으로 양식/클라이언트를 통해 지정됨).
귀하의 진술 CommonsMultipartFile file = request. (myfile)과 다소 혼동 스럽습니다. 파일 업로드 API는 항목 목록을 반환합니다. 목록 항목 = fileUpload.parseRequest (요청); 그게 당신이 말하는 겁니까? – Zenil
@Zenil 죄송합니다.이 파일은'request.getFile ('myfile')' – Anthony
이어야합니다.'RandomAccessFile'을 사용할 수 있습니다. 다음은 그 예입니다. https://opencast.jira.com/svn/MH/contrib/BigFileUploader/Upplet/src/upplet/Uploader.java –