사진을 업로드 할 때 1, 일부 사진은 트로이 목마 파일이 될 사진의 접미사 확장을 변경할 수 있습니다. . . 당신은 사진인지, 파일 스트림을 결정해야
@WebServlet ( "/로드 / UploadServelt은" ) 공공 클래스 에서 UploadServelt가 확장 HttpServlet을 { / ** *文件上传 * / 보호 무효 의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) { 문자열 루트 = request.getServletContext (). getRealPath ( "/ 업로드" ); DiskFileItemFactory 공장 = 새로운 DiskFileItemFactory (); ServletFileUpload 업로드 = 새로운 ServletFileUpload (공장); 시도 { 목록 <FileItem> 목록 = upload.parseRequest (요청); 대한 합니다 (FileItem IT : 목록) { // 파일이 파일 형식 인 경우 IF (! it.isFormField ()) { // 파일 타입의 fileType = getFileType (it.getInputStream ()); // IF (의 fileType == NULL) { / / // 비 이미지 형식 // . response.getWriter () 쓰기 ( "실패는"); // 반환; // } // 문자열 imgValue fileType.getValue = (); // 에서 System.out.println ( "imgValue : "+ imgValue는); // 그림 형식입니다 it.write ( 새 파일 (루트 + "/"+ it.getName ())); . response.getWriter () (쓰기 "성공" ); } } } 캐치 (예외 전자) { 시도 { response.getWriter ()를 쓰기 (. "예외" ); } 캐치 (IOException이 된 E1) { e1.printStackTrace (); } e.printStackTrace (); } } // 判断文件是图片格式 공공 정적 에 FileType getFileType (의 InputStream이다)슬로우 IOException이 { 바이트 [] SRC = 새로운 바이트 [28 ]; is.read (SRC, 0, 28 ); 모두 StringBuilder의 StringBuilder = 새 의 StringBuilder ( "" ); 경우 (SRC == 널 || src.length <= 0 ) { 반환 널 ; } 에 대해 ( int로 I = 0; I <src.length은, 내가 ++ ) { INT의 V SRC = [I]은 0xFF ; 문자열 HV = 는, Integer.toHexString (V) .toUpperCase (); 만약(hv.length () <2 ) { stringBuilder.append ( 0 ); } stringBuilder.append (HV); } 에 FileType []의 파일 형식 =의 FileType.values (); 대한 (에 FileType의 fileType : 파일 형식) { 경우 (. stringBuilder.toString () startsWith은 (fileType.getValue은 ())) { 반환 의 fileType을; } } 반환 널 (null)을 ; } }