나는 말도 안되는 말을하지 않을 것입니다. 나는 당신에게 코드를 게시 할 것입니다. 특정 코드는 다음과 같습니다.
HTML 코드는 다음과 같습니다.
<body> <input id = "fileId"type = "file"accept = "video/*; capture = camera"onchange = "onfile (this)"> <input id = "btn"type = "button"value = "제출"> <script type = "text/javaScript"> var xhr; file) {file formdata (formdata); document.getElementById ( 'fileId'). files [0]); xhr = new xmlhttprequest (); xhr.open ( "post", "http : // localhost : 8889/testup/upservlet"); // xhr.setRequestheader ( "content-type", "charset = utf-8"); xhr.send (fd); xhr.onreadystatechange = processResponse;} 함수 processrespesconse (xhr.ready) {uplogow (xhr.ready 종료 데이터 스트림 끝 "); if (xhr.status == 200) {var infor = xhr.responsetext; alert ("Server Side response = "+Infor);}}} </script> </body>Java 코드는 다음과 같습니다.
패키지 com.yjm.up; import java.io.file; import java.io.fileoutputStream; import java.io.ioexception; import java.io.inputStream; import java.util.list; import javax.servletexception; import javax.servlet.http.http.httpervlet; javax.servlet.http.httpervletrequest; import javax.servlet.http.httpervletresponse; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.diskfileitemfactory; import org.apache.commons.fileupload.servlet.servletfileupload; public class upservlet는 httpservlet {public void dopost (httpservletrequest request, httpservletrepsonse 응답) servletexception, ioexception {// uploaded 파일의 저장된 디렉토리를 가져옵니다. 업로드 된 파일 String SavePath의 보안을 보장하기 위해 외부 세계의 직접 액세스를 허용하지 않습니다. this.getServletContext (). getRealPath ( "/web-inf/upload"); 파일 파일 = 새 파일 (SavePath); System.out.println ( "Test ..."); // 업로드 된 파일의 저장된 디렉토리가 if (! extists ())에 존재하는지 여부를 결정합니다. {system.out.println (SavePath + "디렉토리가 존재하지 않아야합니다. 만들어야합니다. DiskFileItemFactory (); // 2. 파일 생성 파일 업로드 Parser ServletFileUpload 업로드 = 새로운 ServletFileUpload (Factory); // 중국어 garbled 업로드를 해결합니다. SETHEADERENCODING ( "UTF-8"); // 3. 제출 된 데이터가 업로드 양식의 데이터인지 (! 전통적인 방식으로 데이터;} // 4. ServletfileUpload 파서를 사용하여 업로드 된 데이터를 구문 분석하십시오. 구문 분석 결과는 <fileitem> 컬렉션 목록을 반환합니다. 각 fileItem은 양식 양식 목록의 입력 항목에 해당합니다. for (fileitem item : list) {// 일반 입력 항목의 데이터가 파일에 캡슐화 된 경우 (item.isformfield ()) {문자열 이름 = item.getfieldName (); // 일반 입력 항목의 중국어가 달린 문제를 해결하십시오. string (value.getBytes ( "iso8859-1"), "utf-8"); system.out.println (name + "=" + value);} else {// 파일 항목이 업로드 된 파일을 캡슐화하는 경우 // 업로드 된 파일 이름을 캡슐화하는 경우, string filename = item.getname (); if (filename); if (filename); filename.trim (). Equals ( "")) {계속;} // 참고 : 다른 브라우저에서 제출 한 파일 이름은 다릅니다. 일부 브라우저는 : // c : /a/b/1.txt와 같은 경로가있는 파일을 제출하고 일부는 다음과 같은 간단한 파일 이름입니다. inputStream in = item.getInputStream (); // 파일 만들기 파일 생성 파일 스트림 파일 OutputStream out = 새 파일 아웃 + "//" + filename); // 버퍼 바이트 버퍼 생성 [] = new Byte [1024 * 1024]; // 버퍼 바이테 버퍼 [] = new Byte를 만듭니다 [1024 * 1024]; 새 FileOutputStream (savepath + "//" + filename); // 버퍼 바이트 버퍼를 만듭니다 [] = 새 바이트 [1024 * 1024]; // 입력 스트림의 데이터가 읽은지 여부를 결정하는 식별자는 int len = 0; // 입력 스트림을 버퍼로 읽습니다. (len = in.read (buffer))> 0은 int in while ((Len = in.read (buffer))> 0) {// fileoutputStream 출력 스트림을 사용하여 버퍼에 데이터를 지정된 디렉토리에 작성하여 (savepath + "//"// "//"// "//"//} out.flush (); // reput (); in.close (); // 출력 스트림을 닫습니다 .Close (); // 파일 업로드 item.delete ()를 처리 할 때 생성 된 임시 파일을 삭제합니다. Message = "파일 업로드가 성공적으로 업로드!";}}} catch (예외 e) {message = "파일 업로드 실패!"; e.printstacktrace ();} request.setAttribute ( "message", message); request.getRequestDisPatcher ( "/message.jsp"). 전방 (요청, 응답);}}}}.사용 된 Java 패키지는 1G 이상 업로드됩니다
Commons-FileUpload-1.2.1.jar
Commons-IO-1.3.2.jar
//xhr.setRequestheader("content-type","application/octet-stream; charset=utf-8 "); 추가 할 수 없습니다