Struts2 파일 업로드
라이브러리 설치
commons-io-1.4.jar
commons-fileupload-1.2.1.jar
1.단일파일 업로드
1)파일업로드 용량제한 설정
스트럿츠2의 기본 제한 용량은 2MB
struts.xml
<constant name="struts.mulipart.maxSize" value="104859600" />
struts.properties
struts.multipart.maxSize=104857600
둘중에 하나 설정.
2) struts.xml
<action name ="fileUploadAction" class="file.fileUploadAction" method="upload"
<result name="input">/jsp/file/fileUpload.jsp</result>
<result>/jsp/file/fileUploadOK.jsp</result>
</action>
fileUploadAction.java
파일을 서버에 업로드하게 되면 실제 파일은 서버에서 java.io.File이라는 형태로 넘어온다
그 파일의 이름과 타입이 필요하게 되어 ContentType 과 FileName을 선언해야한다.
private File upload;
private String uploadContentType;
private String uploadFileName;
3) fileUpload.jsp
<form action="fileUploadAction" method="POST' enctype="multipart/form-data">
<file name="upload">
<submit>
</form>
업로드된 파일은 웹 서버의 임의의 주소에 tmp파일로 저장한다.
upload 할 파일의 저장위치나 이름을 정의해야한다.
4) 파일저장에 필요한 함수
FileUtils.copyFile()
FileInputStream, FileOutputStream
5) fileUploadAction.java
private File upload;
private String uploadContentType;
private String uploadFileName;
private String fileUploadPath ="D:\\uploadedFile\\";
//setter, getter 생략...
public String upload() throws Exception {
/* 1.방법 */
File destFile = new File(fileUploadPath + getUploadFileName());
FileUtils.copy(getUpload, destFile);
/* 2.방법 */
FileInputStream fis = new FileInputStream(upload);
FileOutputStream fos = new FileOutputStream(fileUploadPath + getUploadFileName());
int bytesRead = 0;
byte[] buffer = new byte[1024];
while((bytesRead = fis.read(buffer,0,1024)) != -1){
fos.write(buffer, 0, bytesRead);
}
fos.close();
fis.close();
return SUCCESS;
}
2. 다중 파일 업로드
1) 리스트를 이용한 다중 업로드
private List<File> uploads = new ArraryList<File>();
private List<String> uploadFileName = new ArrayList<String>();
private List<String> uploadContentType = new ArraryList<String>();
private String fileUploadPath = "D:\\uploadedFile\\";
public String upload() throws Exception {
for(int i=0; i<uploads.size(); i++ ){
File destFile = new File(fileUploadPath + getUploadFileName().get(i));
FileUtils.copyFile(getUploads().get(i), destFile);
}
return SUCCESS;
}
2) fileUpload.jsp
<form action="fileUploadAction" method="POST' enctype="multipart/form-data">
<file name="uploads" id="upload1">
<file name="uploads" id="upload2">
<file name="uploads" id="upload3">
<submit>
</form>
3) 배열을 이용한 다중 업로드
private File[] uploads;
private String[] uploadFileName;
private String[] uploadContentType;
private String fileUploadPath = "D:\\uploadedFile\\";
public String upload() throws Exception {
for(int i=0; i<uploads.length; i++ ){
File destFile = new File(fileUploadPath + getUploadFileName()[i]);
FileUtils.copyFile(getUploads()[i], destFile);
}
return SUCCESS;
}
참조- 스트럿츠2 실무프로그래밍
'JAVA > Struts2' 카테고리의 다른 글
Struts2 파일 다운로드 (0) | 2016.03.16 |
---|---|
Struts2 + Spring + iBatis 연동 및 설정하기 (0) | 2016.03.03 |