자바 기본 편 --- 파일 업로드 (commons - FileUpload 구성 요소)
FileUpload 는 Apache 조직 (www. apache. org) 이 제공 하 는 무료 업로드 구성 요소 로 Apache 사이트 에서 직접 다운로드 (다운로드 주소:http://commons.apache.org/fileupload/) 본 논문 에서 사용 하 는 버 전 은 1.2.1 이지 만 FileUpload 구성 요소 자 체 는 comons 구성 요소 에 의존 합 니 다.그래서 아파 치 에서 이 구성 요 소 를 다운로드 할 때 comons 구성 요소 의 IO 패키지 와 함께 다운로드 해 야 합 니 다 (다운로드 주소:http://commons.apache.org/io/)
commons - fileUpload 업로드 구성 요 소 는 중국어 에 대해 좋 은 처 리 를 했 습 니 다. 업로드 파일 에 중국어 오류 가 발생 하지 않 고 현재 가장 광범 위 한 구성 요소 입 니 다.
commons - fileupload - 1.2.1. jar 와 commons - io - 1.4. jar 를 TOMCAT 에 설정 합 니 다.HOME / lib / 디 렉 터 리 중
³FileUpload 의 구체 적 인 업로드 작업 은 SmartUpload 에 비해 매우 복잡 합 니 다. 다음은 FileUpload 업로드 의 기본 절 차 를 살 펴 보 겠 습 니 다.
1 디스크 공장 만 들 기: DiskFileItemFactory factory = new DiskFileItemFactory ();
생 성 처리 도구: ServletFileUpload upload = new ServletFileUpload (factory);
업로드 파일 크기 설정: upload. setFileSize Max (3145728);
모든 내용 수신: List < FileItem > items = upload. parseRequest (request);
업로드 원리
fileupload 구성 요 소 를 사용 하여 전체 데 이 터 를 받 은 후 모든 데 이 터 를 List 집합 에 저장 하면 Iterator 로 각각 출력 해 야 하지만 일반 텍스트 데이터 와 업로드 파일 이 있 기 때문에 업로드 내용 은 하나의 FileItem 류 대상 으로 표시 합 니 다.
따라서 Iterator 를 사용 하여 모든 FileItem 대상 을 순서대로 꺼 낼 때 FileItem 류 의 isFormField () 방법 으로 현재 작업 의 내용 이 일반 텍스트 인지 업로드 파일 인지 판단 할 수 있 습 니 다. 파일 을 업로드 하 는 경우 파일 의 내용 을 순서대로 추출 할 수 있 습 니 다.일반적인 텍스트 라면 getString () 방법 으로 구체 적 인 정 보 를 얻 습 니 다.
구성 요소 업로드 코드 인 스 턴 스 1
html 코드
<html>
<head><title>commons-FileUpload </title></head>
<body>
<form action="fileupload_demo01.jsp" method="post" enctype="multipart/form-data">
:<input type="text" name="uname"><br>
:<input type="file" name="pic"><br>
<input type="submit" value=" ">
<input type="reset" value=" ">
</form>
</body>
</html>
jsp 코드
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<html>
<head><title>commons-FileUpload </title></head>
<body>
<%
DiskFileItemFactory factory = new DiskFileItemFactory() ;
ServletFileUpload upload= new ServletFileUpload(factory) ;
upload.setFileSizeMax(3 * 1024 * 1024) ; // 3M
List<FileItem> items = upload.parseRequest(request) ; //
Iterator<FileItem> iter = items.iterator() ;
while(iter.hasNext()){
FileItem item = iter.next() ;
String fieldName = item.getFieldName() ; //
%>
<ul><h4><%=fieldName%> --> <%=item.isFormField()%></h4>
<%
if(!item.isFormField()){ //
String fileName = item.getName() ; //
String contentType = item.getContentType() ; //
long sizeInBytes = item.getSize() ;
%>
<li> :<%=fileName%>
<li> :<%=contentType%>
<li> :<%=sizeInBytes%>
<%
} else {
String value = item.getString() ;
%>
<li> :<%=value%>
<%
}
%> </ul>
<%
}
%>
</body>
</html>
구성 요소 업로드 코드 인 스 턴 스 2
<html>
<head><title>commons-FileUpload </title></head>
<body>
<form action="fileupload_demo02.jsp" method="post" enctype="multipart/form-data">
:<input type="text" name="uname"><br>
:<input type="file" name="pic1"><br>
:<input type="file" name="pic2"><br>
:<input type="file" name="pic3"><br>
<input type="submit" value=" ">
<input type="reset" value=" ">
</form>
</body>
</html>
JSP 코드
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*,java.io.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="cn.mldn.lxh.util.*"%>
<html>
<head><title>commons-fileUpload </title></head>
<body>
<%
DiskFileItemFactory factory = new DiskFileItemFactory() ;
factory.setRepository(new File(this.getServletContext().getRealPath("/") + "uploadtemp")) ; //
ServletFileUpload upload = new ServletFileUpload(factory) ;
upload.setFileSizeMax(3 * 1024 * 1024) ; // 3M
List<FileItem> items = upload.parseRequest(request) ; //
Iterator<FileItem> iter = items.iterator() ;
IPTimeStamp its = new IPTimeStamp(/* request.getRemoteAddr() */) ;
while(iter.hasNext()){
FileItem item = iter.next() ;
String fieldName = item.getFieldName() ; //
%>
<ul><h4><%=fieldName%> --> <%=item.isFormField()%></h4>
<%
if(!item.isFormField()){ //
File saveFile = null ;
InputStream input = null ;
OutputStream output = null ;
input = item.getInputStream() ;
output = new FileOutputStream(new File(this.getServletContext().getRealPath("/")+"upload"+File.separator+its.getIPTimeRand()+"."+item.getName().split("\\.")[1])) ;
int temp = 0 ;
byte data[] = new byte[512] ;
while((temp=input.read(data,0,512))!=-1){
output.write(data) ; //
}
input.close() ;
output.close() ;
} else {
String value = item.getString() ;
%>
<li> :<%=value%>
<%
}
%> </ul>
<%
}
%>
</body>
</html>
메모: 이 코드 는 프로젝트 를 만 들 때 프로젝트 이름 아래 upload 폴 더 를 만들어 야 정상적으로 실 행 됩 니 다.
FileUpload 구성 요소 의 불편 한 점:
request. getParameter () 방법 을 사용 하 는 것 처럼 제출 한 인 자 를 정확하게 얻 을 수 없습니다
request. getParameterValues () 를 사용 하 는 것 처럼 제출 인 자 를 정확하게 얻 을 수 없습니다
4. 567917. 모든 업로드 파일 은 순서대로 판단 해 야 각각 저장 할 수 있 고 한꺼번에 대량으로 저장 할 수 없습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.