Jfinal附件上传与重命名

写文字太费劲,直接上代码

 

前台代码:


 

   选择附件:    
    
          

             提交

          

这里需要注意在form中必须指明编码格式:enctype="multipart/form-data"   设置表单的mime编码,默认情况下这个编码格式是application/x-www.form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,该编码下上传二进制数据;

      注意:在以上这种编码的情况下,因为上传的是二进制数据,所以request是得不到输入框数据的,我们可以通过上传组件获取表单中的输入信息。

后台代码:

  String mHttpUrl=request.getRealPath("")+"\\uploadFiles\\";
  int maxSize = 10 * 1024 * 1024;              //10M
  UploadFile  upFile = getFile("FILE", mHttpUrl, maxSize, "utf-8");

 在Jfinal中以上三句就已经完成了文件上传,当然,我们的前提是在lib中引入cos-26Dec2008.jar包

 以上采用getFile方法实现上传单个文件,还可以通过getFiles实现批量上传

 以上getFile 参数1是表单file的域名称

             参数2是上传文件存放的绝对路径

             参数3是文件的最大长度[即文件的大小]

             参数4是指定文件编码

 

上传的文件自定名称保存

      修改上传文件的名称【目前】本人阅读开源社区及个人使用有两种解决方案:

      1.在文件进行保存时进行修改文件命名

      2.先完成文件上传再进行重命名

      根据本人的实际情况[俺还不是高手],选择第二种方案比较靠谱,因为第一种方案需要我们对Jfinal相关jar包进行自定义或重写相关方法再打包再使用。

     第二种方案实现也就一句话,很方便如下:

     ...紧接以上的代码段

     File f = upFile.getFile();
     f.renameTo(File file);

     这样就实现了对所上传的文件的重命名,这里的重命名文件写法如:

     new File(mHttpUrl+System.currentTimeMillis()+"."+type);

     这里用的是时间戳命名。type是文件类型:如jpg,doc[这个可以自己想办法截取]

注意啦----有个小重点

这里还有一个关键问题就是form中的非file域的值的获取

Jfinal中我们获取表单中的文本域中与url传递参数的值相当方便,getpara()就可以了,但是上面我们已经说了二进制值这种获取方式用不上,具体获取办法如下:

   String para= getMultipartRequest().getParameter("para");

这里还要注意一点,以上获取除file类型的文本域以外的字段值时,我们必须保证文件已经完成保存,即getFile这个方法已经执行。

转载于:https://www.cnblogs.com/alwaysy/p/3201191.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值