SpringBoot 배경에서 파일을 업로드하고 다운로드하는 방법은 무엇입니까?
최근 프로젝트에는 파일 업로드 및 다운로드가 포함되었습니다. 프론트 엔드 업로딩은 Baidu WebUploader 플러그인을 사용합니다. 이 플러그인의 사용은 여전히 연구 중이며 향후 정렬되고 기록 될 것입니다. 이 기사는 주로 스프링 부츠 배경에서 파일 업로드 및 다운로드의 처리를 소개합니다.
단일 파일 업로드
// 단일 파일 업로드 @RequestMapping (value = "/ubload")@responseBodyPublic String Upload (@requestParam ( "file") multipartFile 파일) {try {if (file.isempty ()) {return "file이 비어 있습니다"; } // 파일 이름 문자열 filename = file.getoriginalFilename (); logger.info ( "업로드 된 파일 이름은" + filename); // 파일의 접미사 이름을 가져옵니다. string yfixName = filename.substring (filename.lastIndexof ( ".")); logger.info ( "파일의 접미사 이름은 다음과 같습니다." + windixName); // 파일 스토리지 경로 설정 문자열 filepath = "d : // aim //"; 문자열 path = filepath + filename + 접미사 이름; file dest = 새 파일 (Path); // (! dest.getParentFile (). Exists ()) {dest.getParentFile (). mkdirs (); // 새 폴더 생성} file.transferto (dest); // "Uploaded"를 작성하려면 파일을 작성하여 "업로드 된"; } catch (delegalstateException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 반환 "업로드 실패";}파일 경로와 파일 이름을 수정하려면 FilePath 및 Filename을 수정하십시오.
여러 파일 업로드
// multi-file upload @requestmapping (value = "/uploadmore", method = requestmethod.post) @ResponseBodyPublic String hongeFileUpload (httpservletRequest request) {list <multipartfile> files = ((multiparthtttpservletrequest) request ( "file"); multipartfile 파일 = null; BufferedOutputStream 스트림 = null; for (int i = 0; i <files.size (); ++ i) {file = files.get (i); 문자열 filepath = "d : // aim //"; if (! file.isempty ()) {try {byte [] bytes = file.getBytes (); stream = new BufferedOutputStream (새 파일 OutputStream (새 파일 (filepath + file.getoriginalFilename ())); // 파일 경로를 설정하고 stream.write (bytes); // stream.close ()에 쓰기; } catch (예외 e) {stream = null; "th" + i + "파일 업로드 실패 ==>" + e.getMessage (); }} else {return "th" + i + "파일이 비어 있기 때문에 업로드가 실패했습니다."; }} return "성공적으로 업로드";}파일 다운로드
// 파일 다운로드 관련 코드 @RequestMapping ( "/download") public string downloadfile (httpservletrequest request, httpservletrepsonge 응답) {String filename = "aim_test.txt"; // 파일 이름을 설정하고 파일 이름으로 바꾸고 비즈니스 요구에 따라 파일 이름으로 바꾸십시오. 새 파일 (RealPath, filename); if (file.exists ()) {response.setContentType ( "Application/ForceDownload"); // 강제 다운로드를 열지 않고 강제 다운로드를 설정합니다. ADDHEADER ( "Content-Disposition", "attachment;" + filename); // 파일 이름을 byte [] buffer = newte [1024]; fileInputStream fis = null; bufferedInputStream bis = null; try {fis = new FileInputStream (파일); BIS = 새로운 BufferedInputStream (FIS); outputStream os = response.getOutputStream (); int i = bis.read (버퍼); while (i! = -1) {os.write (버퍼, 0, i); i = bis.read (버퍼); } system.out.println ( "성공"); } catch (예외 e) {e.printstacktrace (); } 마침내 {if (bis! = null) {try {bis.close (); } catch (ioexception e) {e.printstacktrace (); }} if (fis! = null) {try {fis.close (); } catch (ioexception e) {e.printstacktrace (); }}}}} return null;}MultipartConfig 구성
MultipartConfig 구성 클래스를 사용하여 전역에서 파일 업로드를 제어 할 수 있습니다.
@ConfigurationPublic Class MultipartConfig {@bean public multipartConfigelement multipartConfigelement () {multipartConfigFactory factory = new MultipartConfigFactory (); // 페이지 가이 크기를 초과하는 경우 파일 크기 제한을 설정하면 예외 정보가 공장으로 던져집니다. // kb, mb // 총 업로드 된 데이터 설정 총 크기 팩토리 .SetMaxRequestSize ( "20MB"); // 파일 임시 폴더 경로 설정 // factory.setLocation ( "e : // test //"); // 파일 이이 값보다 크면 파일로 저장됩니다. 이 값보다 적은 경우 파일은 메모리에 저장됩니다. 기본값은 0 // factory.setMaxRequestSize (0)입니다. return factory.createmultipartconfig (); }}주목해야 할 것
전면 및 백엔드 파일 전송 형식은 멀티 파트/Form-Data 여야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.