본문 바로가기

JAVA/Struts2

Struts2 파일 업로드

반응형

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