글 작성시, 스트럿츠로 간단하게 업로드 되게 하는 방법을 알아 보자.


writeForm.jsp

<s:form action="/write.do" enctype="multipart/form-data">

<s:file name="uploads" />

<s:file name="uploads" />

<s:file name="uploads" />

<s:submit>
</s:form>

writeAction 에서건 VO 에서건 리스트 파일형태로 들고 와야한다.
private List<File> uploads = new ArrayList<File>();
private List<String> uploadsFileName = new ArrayList<String>();
private List<String> uploadsContentType = new ArrayList<String>();
List<File>과 List<String>의 getter/setter 선언.


위와 같이 uploads 에 한해 "uploadsFileName" 처럼 명명하여 파일 이름을 쓸 수 있다.


WirteAction.java

public String execute() throws Exception {

String filePath = vo.FILEPATH; // 파일 저장 위치

List<File> uploads = vo.getUploads(); // List 형태의 upload file 들

List<String> uploadsFileName = vo.getUploadsFileName(); 


bo.write(vo); 

if (uploads != null) {

for (int i=0 ; i<uploads.size(); i++) {

String saveFileName = System.currentTimeMillis() + "_"

+ uploadsFileName.get(i);

       File destFile = new File(filePath + saveFileName);

       

       fVo.setRealfilename( uploadsFileName.get(i) );

       fVo.setSavefilename( saveFileName );

       

       FileUtils.copyFile(uploads.get(i), destFile);  

       bo.saveFile(fVo);

   }

}

return SUCCESS;

}


retrieve.jsp

<s:iterator value="list" status="stat">

<s:url id="download" action="fileDownload">

<s:param name="basePath" value="basePath" />

<s:param name="fileName">

<s:property value="list[#stat.index].name" />

</s:param>

</s:url>

<li><s:a href="%{download}">

<s:property value="list[#stat.index].name" /></s:a><br /></li>

</s:iterator>




+ Recent posts