스트러츠에서 파일업로드 소스 궁금한점?
사지타리우스
스트러츠에서 cvs파일 가지고 오기
.java.lang.nullpointerexception
제가 지금 스트러츠에서 파일 업로드 하는 것을 구현중입니다.
그래서 인터넷에서 스트러츠 파일업로드를 찾아보니 대부분 아래와 같은 소스를 쓰더군요. 그런데 이아래 소스중에 궁금한게 있습니다.
아래부분중에 빨간색 부분인다. 다른거는 다 파일이 있는데 formfile은 자바 파일로 따로 없는데
form.formfile은 어떤파일을 말하는건가요?
제가 아는 상식은 form폴더에 formfile.java가 있는건줄 아는데 어느곳에도 이 파일에 대한 이야기가 없네요..
그리고 막상 실행시키면formfile file= fileform.getfile(); 이부분에서
이파일이 빠진건지 아니면 다른 의미가 있는건지 가르켜주세요. 저부분에서java.lang.nullpointerexception이 발생합니다.
먼저 enctype=multipart/form-data 인 form 객체를 생성하고
action은 설정에 맞게 적당히 작성합니다.
fileform.jsp
---------------------------------------------------------------------------------
form name=fileform method=post action=/uploadfile.do enctype=multipart/form-data
select file: input type=file name=file /br
input type=submit value=upload file
/form
-------------------------------------------------------------------------------
web.xml에서 설정한 struts-config.xml 에서
action 태그와 form-bean 태그를 작성합니다.
struts-config.xml
-----------------------------------------------------------------------------------
form-bean name=fileform type=form.formfile
form-property name=file type=org.apache.struts.upload.formfile/
/form-bean
action path= /uploadfile
name = fileform
type= action.uploadfileaction
forward = /notice/listfile.jsp/
-------------------------------------------------------------------------------
actionform을 상속받은 fileform객체를 작성합니다.
fileform.java
-----------------------------------------------------------------------------
package form;
import org.apache.struts.action.actionform;
import org.apache.struts.upload.formfile;
public class fileform extends actionform {
public fileform(){}
private formfile file;
public formfile getfile() {
return file;
}
public void setfile(formfile file) {
this.file = file;
}
}
--------------------------------------------------------------------------------
파일업로드 처리가 이루어지는
action 을 상속받은 객체를 작성합니다.
uploadfileaction .java
---------------------------------------------------------------------------------
package action;
import java.io.bytearrayoutputstream;
import java.io.fileoutputstream;
import java.io.inputstream;
import java.io.outputstream;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.apache.struts.action.action;
import org.apache.struts.action.actionform;
import org.apache.struts.action.actionforward;
import org.apache.struts.action.actionmapping;
import org.apache.struts.upload.formfile;
import form.fileform;
public class uploadfileaction extends action {
public uploadfileaction() {
// todo auto-generated constructor stub
}
public actionforward execute(
actionmapping mapping,
actionform form,
httpservletrequest req,
httpservletresponse res)
{
try
{
system.out.println(===================uploadfileaction start==========);
fileform fileform = (fileform)form;
//--------------파일 처리하는 부분 시작--------------------------//
formfile file= fileform.getfile();
string contenttype= file.getcontenttype();
string filename= file.getfilename();
int filesize= file.getfilesize();
byte[] filedata= file.getfiledata();
bytearrayoutputstream baos = new bytearrayoutputstream();
inputstream stream = file.getinputstream();
//파일을 업로드할 절대 경로를 지정해야 한다.
string path = d:\\upload\\;
outputstream bos = new fileoutputstream( path + file.getfilename() );
int bytesread = 0;
byte[] buffer = new byte[8192];
while ((bytesread = stream.read(buffer, 0, 8192)) != -1)
{
bos.write(buffer, 0, bytesread);
}
baos.close();
bos.close();
&; stream.close();
file.destroy();
//--------------파일 처리하는 부분 끝--------------------------//
system.out.println(===================uploadfileaction end==========);
}
catch(exception e){e.printstacktrace();}
return mapping.findforward(uploadfile);
}
}