使用Struts2完成文件上传下载的流程

文件上传的流程
  1. form表单,提交方式为post, 添加属性encType=”multipart/form-data”
    添加文件域在Action定义属性:File file;//用来接收文件,
    String fileFileName;//接收老文件名,规定声明 :文件名+FileName
    生成相应的方法get/set方法
  2. 生成uuid,String uuid=UUID.randomUUID().toString(); //保证新文件名不重复
  3. uuid拼接老文件名后缀生成新文件名,
    String newFileName=uuid+fileFileName.subString(fileFileName.lastIndex(“.”));
  4. 将新文件名和老文件名存入数据库
  5. 获取tomcat路径,并加上文件夹的名字upload
    String path=ServletActionContext.getServletContext().getRealPath(“\upload”);
  6. 利用FileUtils工具类,将文件写到目标路径
    FileUtils.copyFile(file,new File(path+”\”+newFileName));
文件下载的流程
  1. 用户点击下载,跳转到下载的Action参数为id,(如果表单中数据包含隐藏的老文件名和新文件名可以直接将对象传过来,就不用根据id查询数据库)
  2. 在Action中声名属性InputStream inputStream;//(规定声明)用来接收流;老文件名 String oname;并生成get/set方法
  3. 根据id查询数据库,获得老文件名和新文件名,
  4. 根据新文件名并获得tomcat的安装路径+upload文件夹,获取得到文件的绝对路径
  5. 创建流赋给inputStream,inputStream=new FileInputStream(“绝对路径”);
  6. 在struts.xml进行配置,标签
    <result name=””  type=”stream”>  //stream 表示以流的形式
    		<param name=”contextDispostion”>attachment;filename=${oname}</param>
    </result>
    
  • contextDispostion:表示下载的具体信息
  • attachment:表示以附件的形式下载
  • filename= o n a m e : 表 示 下 载 的 时 候 显 示 的 文 件 名 ; {oname} :表示下载的时候显示的文件名; oname:{}//获取Action中属性值
如何解决下载时文件名乱码问题

在要显示的老文件名的get方法中添加:
老文件名=new String(老文件名.getBytes(“UTF-8”,”ISO-8859-1”));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值