在上传文件时,我们需要设置form表单 ENCTYPE= "multipart/form-data "
在controller中,获取文件时 UploadFile uf = getFile(x,x,x,x);
此时,上传至服务器的文件名保持不变,即test.doc ,保存在服务器的文件名依然为test.doc
那么我想采用时间戳来为服务器上的文件命名时,暂不能实现。
而且在这个表单中的其它字段值,采用getPara(X),是得不到的(null)
基于以上问题:
1、建议在getFile时,多传一个参数(重命名是否支持,或者直接为新文件名)
<span style="font-size:16px;">multipartRequest = new com.oreilly.servlet.MultipartRequest(request, saveDirectory, maxPostSize, encoding, fileRenamePolicy);</span>
以上为原代码,这里需要修改的是 fileRenamePolicy
重新定义一个实现了 FileRenamePolicy
接口的类 UploadFileRenamePolicy ,
重写rename方法 public class UploadFileRenamePolicy implements FileRenamePolicy
2、o'reilly组件 MultipartRequest 对象. getParameter("");来获得我们需要的字段值
在原抽象类中,私有成员MultipartRequest
没有get set方法,先添加。
然后,在我们的controll中get MultipartRequest().getParameter(x)
注意:这里的get MultipartRequest()
需要在getFile()之后,因为在getFile()时, MultipartRequest
才会被初始化
以上只是学习时的,临时补救方法。
想采用时间戳来为服务器上的文件命名时,可以这样:
UploadFile uf = getFile();
File file = uf.getFile();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。