///step3
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import com.opensymphony.xwork.ActionSupport;
public class UploadAgent extends ActionSupport {
private File doc;// doc与页面取一样的名字
private String url;//记录跳转的url
@Override
public String execute() throws Exception {
// TODO 自动生成方法存根
File myFilePath = new File("../webapps/QJCProject/materiallib");//设定文件要上传的目录,也可以通过jsp页面传
if (!myFilePath.exists()) {
myFilePath.mkdir();
System.out.println("*******MaKe DIR!*********");
}
String time = "";
try{
Calendar now=Calendar.getInstance();
SimpleDateFormat sdf=new SimpleDateFormat( "yyyyMMddHHmmss");
time = sdf.format(now.getTime());
}catch(Exception e){
e.printStackTrace();
}
File myFile = new File(myFilePath,time+doc.getName());
try {
java.io.FileInputStream fosfrom = new java.io.FileInputStream(doc);
java.io.FileOutputStream fosto = new FileOutputStream(myFile);
byte bt[] = new byte[1024];
int c;
while ( (c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
fosfrom.close();
fosto.close();
return "success";
}
catch (Exception ex) {
ex.printStackTrace();
return "error";
}
}
public void setDoc(File doc) {
this.doc = doc;
}
public File getDoc() {
return doc;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
///step2. xwork.xml
${url}
${url}
今天上午研究了一下文件上传,由于系统本身采用了webwork,所以决定就用webwork自带的上传功能吧。文章记录下一些必须的步骤。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
step1. webwork.properties
增加一下内容
webwork.multipart.saveDir=../uploads
webwork.multipart.parser=com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest
第一个是指定webwork上传的临时目录,第二个是指定上传方式。webwork支持三种,这里采用的pell方式,另外两种没有尝试
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
step2. xwork.xml
增加一句<include file="com/upload/until/upload.xml"></include>
在upload.xml文件中
<interceptors></interceptors>之间是设定文件上传的拦截器
<action></action>之间是设定将要使用的action,在jsp文件中就可以以uploaddo作为action的名字了
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
step3. UploadAgent.java
这个文件就是处理上传文件的地方了。webwork是把文件上传到了一个临时文件夹里,就是在webwork.properties中所指定的。然后我们要做的就是把这个文件复制到你要保存的地方,同时我利用当前时间对上传的文件进行改名以防止文件名重复。在这个文件中还可以对数据库进行操作,方便对上传文件的维护
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
step4. upload.jsp
jsp文件中很简单,和平时一样写一个form,然后加上action
<form action="uploaddo.action" enctype="multipart/form-data" method="post">
<input type="file" name="doc"/>
<input type="submit" value="上传" />
</form>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
至此,工作完成了,其实还是挺简单的啦,只不过具体怎么实现的还是不知道,哎~
200




被折叠的 条评论
为什么被折叠?



