上传文件:
action:
service:
XML:
jsp:
action:
public class FileUpLoadImp extends ActionSupport implements FileUpLoad {
//上传文件保存的基本路径,不包含需要动态创建的目录
private String saveDir=System.getProperty("user.dir")+File.separator+"flv";
//上传文件
private File file;
//上传文件名
private String fileFileName;
private FileUpLoadService fservices;
private String title;
private UserInfo user;
/**
* 重写父类超大小限制异常抛出方法
* */
@Override
public void addActionError(String anErrorMessage) {
//这里要先判断一下异常,是文件超过大小限制才处理
if (anErrorMessage.startsWith("the request was rejected because its size")) {
//将信息替换掉
super.addActionError("您上传的附件过大,请确保单次所上传的附件大小总和没有超过100Mb!");
} else {
//不是超限制则不管它
super.addActionError(anErrorMessage);
}
}
@Override
public String upLoadFileVedio() throws IOException {
//验证格式
System.out.println(title+":"+user.getUsername()+":"+user.getPhone());
if(FileUpLoadUtils.checkVideoType(this.getFileFileName())){
/**处理上传视频保存路径**/
//创建动态路径拼接上固定路径
// UserInfo userInfo=(UserInfo)ServletActionContext.getRequest().getSession().getAttribute("user");
UserInfo userInfo=new UserInfo();
userInfo.setId(22);
saveDir= saveDir+File.separator+userInfo.getId();
//处理路径不存在则创建
FileUpLoadUtils.makeDir(saveDir);
//逻辑处理重命名文件
setFileFileName(FileUpLoadUtils.changeFileName(getFileFileName()));
//将路径及文件名拼接copy文件及返回客户端
saveDir=saveDir+File.separator+getFileFileName();
if(fservices.saveFile(file,saveDir)){ //保存成功,插入数据库,返回页面信息
PrintWriter pw=ServletActionContext.getResponse().getWriter();
pw.write(saveDir);
pw.flush();
pw.close();
}
return null;
}
return "input";
}
public String getSaveDir() {
return saveDir;
}
public void setSaveDir(String saveDir) {
this.saveDir = saveDir;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public FileUpLoadService getFservices() {
return fservices;
}
public void setFservices(FileUpLoadService fservices) {
this.fservices = fservices;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public UserInfo getUser() {
return user;
}
public void setUser(UserInfo user) {
this.user = user;
}
}
service:
public class FileUpLoadService{
public boolean saveFile(File file, String dir){
InputStream in=null;
OutputStream out=null;
try{ //创建流
//创建保存文件
File uploadFile = new File(dir);
//以上传文件创建输入流读入文件
in = new FileInputStream(file);
//输出流copy文件到储存地址
out = new FileOutputStream(uploadFile);
//输出
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
//关闭流
in.close();
out.close(); }
catch (IOException e){
return false;
}
return true;
}
}
XML:
<struts>
<!-- 系统常量定义,定义上传文件字符集编码 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!-- 系统常量定义,定义上传文件临时存放路径 如D://-->
<constant name="struts.multipart.saveDir" value="./"></constant>
<!-- 上传大小,类中也可验证小于此值的文件 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<package name="actionImp.FileUpLoadImp" namespace="" extends="struts-default">
<action name="uploadAction" class="action_upLoad">
<!-- 文件上传大小超限制跳转在此配置-->
<result name="input">/test.jsp</result>
</action>
</package>
</struts>
jsp:
<form action="uploadAction!upLoadFileVedio.do" method="post" enctype="multipart/form-data">
<input type="text" name="title"/>
<input type="text" name="user.username"/>
<input type="text" name="user.phone"/>
请选选择:<input type="File" name="file"/><br>
<input type="submit" value="提交"/>
</form>