基于struts的文件上传的核心还是java文件输出输出处理。文件通过表单提交,struts中的action对上传的文件进行处理,其实跟一般表单数据的处理是一样的。
一、form表单控件设置
<form action="/FileUpandDown/register.do" enctype="multipart/form-data" method="post"> 文件:<input type="file" name="myphoto"/> <input type="submit" value="注册"/> </form>
这里要主要form的属性enctype的值不是默认的application/x-www-form-urlencoded而是enctype="multipart/form-data"
二、struts中表单的配置
public class UserForm extends ActionForm { private String username;//用户名称 private FormFile myphoto;//上传文件 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public FormFile getMyphoto() { return myphoto; } public void setMyphoto(FormFile myphoto) { this.myphoto = myphoto; } }
注意import org.apache.struts.upload.FormFile类,struts中有响应的文件上传类型
三、action请求处理
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UserForm userForm = (UserForm) form; // TODO Auto-generated method stub String name=userForm.getUsername(); FormFile formFile=userForm.getMyphoto(); //获取上传文件名 String filename=formFile.getFileName(); //获取上传文件的大小 int filesize=formFile.getFileSize(); //定义输入流 InputStream is=null; //定义输出流 OutputStream os=null; try { //获取输入流 is=formFile.getInputStream(); //得到upload文件夹服务器端的绝对路径 String uploadPath=this.getServlet().getServletContext().getRealPath("/upload"); //写入相应文件夹并重命名文件 os=new FileOutputStream(uploadPath+"\\"+MyTools.getNewFileName(filename)); //读取文件并写出到服务器的upload文件夹中 int len=0; //缓存,防止上传文件过大 byte[] bytes=new byte[1024]; //循环处理 while((len=is.read(bytes))>0){ //读一点,写一点 os.write(bytes,0,len); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { //关闭流 is.close(); os.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } }
这里对于上传文件进行了如下操作:
1、获取上传文件的基本信息。struts表单的formfile类提供了相关的方法。如获取文件名,文件大小等
2、通过输入流读取文件,通过输出流写入文件。
3、获取本地文件夹的绝对路径,重命名上传文件,防止因文件名重复而导致覆盖源文件。
4、解决中文文件名的乱码问题(通过过滤器可以解决)。
5、java中UUID通用唯一识别码的使用
文件上传要注意的问题:
1、上传文件类型控制
2、上传文件大小控制
3、上传文件目录控制
相关推荐
本代码是基于struts的实现了文件的上传和下载,适合初学者进行学习
基于struts2的文件上传+过滤器 可以动态的控制文件的类型和文件大小
下面小编就为大家带来一篇基于Struts文件上传(FormFile)详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
基于Struts2的文件上传下载功能的完整源代码。经过测试可正确运行。
struts2的文件上传和文件下载的代码,出品必属精品
基于Struts2实现头像或文件上传,基于Struts2实现头像或文件上传,基于Struts2实现头像或文件上传
基于struts文件上传 。。。。 直接可以用
基于struts的上传文件(完成例子可直接用)
本事例代码主要使用Strust1提供的上传功能对文件进行上传。
java 文件上传(包括struts2文件上传,smartupload,基于apatch 的fileupload的文件上传):该文件包括文件上传的多个实例:有基于strtus2自带的文件上传实例、smartupload文件实例 和基于aptche自带的fileupload 的...
这个是基于struts的上传下载的文件 通过这个文件可以了解struts的上传原理
基于struts2 框架的文 件上传 copy 模式 字节流上传 字符流上传
包含了Struts+hibernate文件,上传所用到的主要jar,以及处理的action
基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线解压,优秀源代码! 基于Struts2和Spring的网络硬盘系统,批量上传文件和在线...
简单实用的struts2文件上传ppt参考,包括文件配置和使用方法
基于struts2的用数组接受多个文件上传+过滤器 用数组接受的同时多文件上传
基于Struts框架的多文件上传组件设计和研究,这个是文件,对于要写毕业论文的同学会很有帮助的
基于当前最新版本Struts2.3的多文件批量上传与下载,直接上传到服务器路径下,未涉及数据库操作。对上传的文件类型进行过滤