您的位置:首页 > 编程语言 > Java开发

关于Struts2上传问题代码实现

2017-08-09 10:28 411 查看
Action

相关的getset方法省略

//表单上提供的文件名和文件资源
private String filename;
private File file;   //上传文件
private String fileFileName;//上传文件名,  上传字段名称+FileName  大小写区别   自动赋值
private String fileContentType;//上传类型
上传字段名称+ContentType   自动赋值
public String upload() throws IOException{
System.out.println(file);
if(file==null){
throw new FileNotFoundException("请添加上传文件");
}
//拿到ServletContext对象   getRealPath
ServletContext s = ServletActionContext.getServletContext();
//通过getRealPath方法,获取根据一个虚拟目录的到的真实目录
String path = s.getRealPath("/WEB-INF/UploadFile");
//path应该为想存入路径
System.out.println("真实目录  : " + path);
//如果不存在需要创建  
File ToFile = new File(path);
System.out.println(ToFile);
if(!ToFile.exists()){
ToFile.mkdirs();
}
//把资源存进去
//剪切,把临时文件剪切指定位置并且重命名,不存在临时文件
boolean renameTo = file.renameTo(new File(ToFile,fileFileName));//把文件重命名到一个新的文件file,名字叫file.getname

// FileUtils.moveToDirectory(file, ToFile, true); //临时文件不可取
System.out.println(">>>>>>>>>>>>>>>> "+" 文件类型 " + fileContentType+"    文件名" +fileFileName );
return SUCCESS;
}

jsp部分

 <body>

  <!-- 文件上传的必要条件

  请求方式必须是post

  enctype 属性的前提必须是multipart/form-data
提供一个文件选择域

  -->

  <s:form action="upload" method="post" namespace="/" enctype="multipart/form-
88e8
data">

  <s:textfield name="filename" label="FileName"></s:textfield>

  <s:file name="file" label="please choose a File"></s:file>

  <s:submit></s:submit>

  </s:form>

  </body>

Struts2配置

 <constant name="struts.devMode" value="true"/>

 <package name="default" namespace="/" extends="struts-default">

  <action name="upload" class="com.UploadAction" method="upload">

  <result>/index.jsp</result>

  </action>

</package>

这些代码没有实现文件的类别和大小的限制,本人小菜鸟刚起飞,在这总结一下,

在写action的时候一定分清真实目录,希望总结的过程也能帮上一点别人是最好的 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: