블로거는 최근 외부 데이터에 내부적으로 액세스 할 수있는 인트라넷 프로젝트에서 작업하고 있지만 외부에서는 내부 데이터에 액세스 할 수 없으므로 파일을 업로드 할 수 없습니다. 따라서 블로거는 다른 접근 방식을 취하고 업로드 된 데이터를 저장하기 위해 로컬 서버에서 폴더를 만듭니다.
환경 : JDK, Tomcat
1. 프론트 데스크에 파일 업로드 (Ajax 업로드)
<입력 유형 = "파일"이름 = "annexurl"id = "annexurl"multiple = "multiple"/>
여기서 다중 = "배수"는 여러 파일을 업로드하도록 설정되어 있습니다
함수 uploadFile () {var files = document.getElementById ( "annexurl"). 파일; if (files.length! = 0) {var formdata = new FormData (); for (var i = 0; i <files.length; i ++) {var file = files [i]; formdata.append (file.name, file); } $ .ajax ({url : 'cdc/public/savefiles', type : 'post :'post ', cache : false, data : formdata, //이 매개 변수는 jQuery에 고유하고 직렬화되지 않기 때문에 JSON 형식의 문자열이 아니기 때문에 ProcessData를 전달해야합니다. false를 설정해야합니다. ContentType를 통해 : false, success : function (data) {save (data.data)}; } else {save (); }}} 여기서는 FormData 객체를 사용하여 파일 객체를 캡슐화해야합니다. Save () 메소드는 업로드 후 반환 된 파일 경로를 저장하는 데 사용되며 쉽게 다운로드 할 수 있도록 데이터베이스에 저장합니다.
2. 백그라운드에서 파일을 받고 서버에 업로드합니다.
// 여러 파일을 업로드하고 객체 모음 (첨부 파일 주소, 이름) @RequestMapping (value = "savefiles", method = requestmethod.post) @ResponseBody public jsonobject savefiles (httpservletrequest request, httpservlejject response) {jsonobject jsonobject = new jsonobject (); try {request.setcharacterencoding ( "utf-8"); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } collection <bart> part = null; try {parts = request.getParts (); } catch (ioexception e) {e.printstacktrace (); } catch (servleTeXception e) {e.printstacktrace (); } iterator <bart> iterator = parts.iterator (); // 이름 모음, 전경 목록으로 반환 <문자열> 목록 = new ArrayList <> (); while (iterator.hasnext ()) {part part = iterator.next (); // 실제 저장된 실제 파일 이름을 생성 (고유) // 파일 업로드에 얻은 파일 이름이 포함되어 있어야하는 이유를 모릅니다. 그렇지 않으면 파일 이름, 디렉토리 이름 또는 볼륨 태그의 구문이 올바르지 않습니다. 이미지 업로드 // 파일 이름에 그러한 제한이없고, 데이터베이스를 저장하고, 문자열 이름 = part.getName ()을 표시하는 데 사용합니다. String realname = uuid.randomuuid (). toString () + 이름; list.add (name + "&&" + realname); ///home/tomcat/apache-tomcat-9.0.1/files String RealPath = "D :" + file.separator + "Apache-tomcat-8.5.15" + file.separator + "files"; // String realPath = "C :" + file.separator + "XHJ224" + file.separator + "소프트웨어" + file.separator + "Apache-Tomcat-9.0.1" + file.separator + "files"; // String realPath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "files"; 파일 = 새 파일 (realPath); // 디렉토리가 존재하지 않는 경우 (! file.isdirectory ()) {// 파일 업로드 디렉토리 파일을 만듭니다 .mkdirs (); } // 파일 스토리지 문자열의 실제 경로 Filepath = RealPath + file.separator + realName; try {part.write (filepath); } catch (ioexception e) {e.printstacktrace (); }} jsonobject.put ( "data", list); jsonobject를 반환합니다. } List Collection은 파일 이름과 실제 파일 이름으로 스 플라이 싱 된 문자열을 추가하며 나중에 필요합니다. RealName은 여러 업로드 된 파일 이름 간의 충돌을 방지하는 것입니다. RealPath는 파일 저장 경로입니다. 운영 체제마다 경로가 다릅니다. RealPath는 프로젝트 포팅을 용이하게하기 위해 Tomcat 아래에 가장 잘 배치됩니다.
File.separator는 경로 분리기이며, 어떤 운영 체제가 자동으로 식별하고 다른 경로 분리기를 사용할 수 있습니다 (Windows는 '/', Linux는 '/'입니다). 마지막으로 목록을 프론트 데스크로 돌려 보냅니다.
이 기사는 "Java 업로드 작업 기술의 요약"으로 편집되었으며 모든 사람들은 배우고 읽을 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.