이 기사는 Java가 참조를 위해 파일 업로드 및 다운로드 함수를 구현할 수있는 특정 코드를 공유합니다. 특정 내용은 다음과 같습니다
프론트 엔드는 양식 양식의 ENCTEPE 속성을 사용하여 데이터 전달 방법을 이진 "스트림"형식으로 수정합니다. 서버 (Servlet)는 getInputStream ()을 통해 흐름 정보를 얻고 Java I/O 스트림의 기본 작업을 사용하여 서버에서 일시적으로 생성 된 파일 온도에 흐름을 씁니다. 그런 다음 기본 파일 작업을 다시 사용하여 임시 파일의 내용을 읽고 가로 채고 정보를 기반으로 해당 파일을 작성하고 특정 정보를 읽으십시오. 다운로드 할 때 제출 된 파일 이름을 기반으로 서버에서 해당 파일을 찾은 다음 출력 스트림 아웃 스트림에 따라 페이지로 출력 한 다음 서블릿의 응답 유형 및 응답 헤더를 설정하십시오.
특정 전송 프로세스는 다음과 같습니다.
흐름 정보의 일부는 다음과 같습니다.
특정 코드는 다음과 같습니다.
프론트 엔드 코드 :
<html> <head> <meta http-equiv = "content-type"content = "text/html; charset = utf-8"> <title> 제목 삽입 제목 </title> <script src = "js/jquery.js"> </script> </head> <body> <file comport "방법 ="emptart/action = "emptart * <table> <tr> <td> 파일 업로드를 선택하십시오 : </td> <td> <td> <input id = "myfile"name = "myfile"type = "file"value = ""/> </td> <td> <input type = "value ="upload "> </td> </td> <tr> {td> $} </td> </td> </td> 다운로드 : <a href = "fileloadownservlet? filename = $ {filename}"> $ {filename} </a> </body> </html>서블릿 부품 업로드 (코어)
@webservlet ( "/fileUpservlet") public class fileUpservlet는 httpservlet {private static final long serialversionuid = 1l을 확장합니다. / ** * @httpservlet#httpservlet () */ public fileUpservlet () {super (); // TODO 자동 생성 생성자 스텁}/ ** * @ @httpservlet#doget (httpservletrequest 요청, httpservletreponse responsk) */ protected void doget (httpservletrequest 요청) 응답); } / ** * @ @httpservlet#dopost (httpservletrequest 요청, httpservletresponse 응답) * / protected void dopost (httpservletrequest 요청, httpservletrepsonse 응답) servletexception, ioexception {// to auto-genated methoble request.setcharacterencoding ( "UTF-8"); 입력 스트림 파일 = requestStream (); // 요청 가져 오기 스트림 정보 문자열 tempname = "d :/temp"; // tempfile 파일의 임시 저장을 나타냅니다. 파일 tempfile = 새 파일 (tempname); // fileoutputstream outStream = new FileoutputStream (tempfile); 바이트 B [] = 새로운 바이트 [1024]; int n; while ((n = filesSource.read (b))! = -1) // {outputStream.write (b, 0, n)을 읽을 때까지 매번 출력 스트림에서 1024 바이트를 읽습니다. } outputStream.close (); filesource.close (); // 입력 및 출력 스트림을 닫습니다./*다음은 주로 임시 생성 온도 파일을 구문 분석하기위한 특정 파일 작업이며 대부분의 지식은 Java 입력 및 출력 스트림의 내용입니다! */randomAccessFile randomFile = new randomArdAccessFile (tempfile, "r"); // 랜덤 스트림, 임시 파일을 읽도록 지정하고, randomfile.Readline () 만 읽습니다. // 첫 번째 줄을 읽고, 유효하지 않은 데이터, 무효 데이터 없음 str = randomfile.Readline.Readline (); endIndex = str.lastIndexof ( "/" "); // 필요한 데이터 문자열의 위치를 지정합니다. filename = str.substring (startindex, endindex); // 파일 이름을 가로 채서 파일 포인터를 재배치하고 파일 randomfile.seek를 가져옵니다. (n = randomfile.readbyte ()! = -1 = 4) {startext = randomfile.getFilePointer ()} randomfile.getfilepointer () inttext> = 2; getServletContext ( "/")+"images"; // 파일 저장 디렉토리 System.out.println (realPath) (realPath); RandomAccessFile RandomAccessFile = SaveFile, "RW"); randomaccessfile.close.close.delete (); time+"+filename+"성공적으로 업로드! ").섹션 다운로드
보호 된 void dopost (httpservletRequest 요청, httpservletreponse 응답) servletexception, ioexception {// todo auto-auto-auto-auto-auto-auto-auto-auteclection stub string filename = request.getParameter ( "filename"); 문자열 path = getServletContext (). getRealPath ( "/")+"이미지/"; 파일 = 새 파일 (path+filename); // file if (file.exists ()) {response.setContentType ( "application/x-msdownload"); // 응답 유형을 설정하십시오. 여기에 다운로드 유형 응답이 있습니다 .SetheAder ( "Content-Disposition", "첨부 파일; filename =/" "+filename+"/""); // inputStream inputStream 열기 = 새 fileInputStream (file); servletoutputStream outputStream = response.getOutputStream (); 바이트 B [] = 새로운 바이트 [1024]; int n; while ((n = inputStream.read (b))! = -1) {outputStream.write (b, 0, n); } outputStream.close (); inputStream.close (); } else {request.setAttribute ( "결과", "파일이 존재하지 않습니다! 다운로드 실패!"); request.getRequestDispatcher ( "/fildeop.jsp"). FORMPER (요청, 응답); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.