SmartUpload
这是一种在JSP中使用非常广泛的文件上传组件。
要使用该组件要首先在tomcat的lib中导入smartupload.jar,或者放到其他的classpath路径下。
上传方法:
提交的方式非常简单,使用表单提交即可,要注意在from标签中加入enctype=”multipart/form-data”来让文件以二进制流的方式上传。并且使用post方法,因为get有长度限制。在input属性中填入file就可以了。
记得要在根目录下建立一个upload文件夹,以保存文件。
表单action指向的jsp文件,要完成以下几个步骤。
SmartUpload smart =new SmartUpload(); //实例化SmartUpload对象
smart.initialize(pageContext); //初始化上传的操作
smart.upload(); // 准备上传
smart.sava(“upload”); // 保存文件
当然,不要忘记了导入smart的包。
封装二进制流带来的问题
问题来了,我们在form标签中,为表单加入了一个将文件封装成二进制的属性。这个属性,不仅仅是对文件封装哦,连带着其它的文本都封装掉了。加入你想让图片和文字通过一个表单提交,难道就只能二者取其一了么?
为解决这个问题,smartupload组件提供了一个方法,但要注意必须要插在准备上传之后。
String x=smart.getRequest().getParameter(“表单参数名”);
重命名带来的问题
要注意的一点是,按照以上的方法,上传的文件名仍旧保存了原文件的名字。这就有可能会造成重名覆盖的问题。
为了解决这个问题,需要编写一个javabean来解决。这个javabean的功能是对文件进行重命名。
可以使用”ip地址+时间戳+三位随机数字“,这是一种常见的重命名方法,然后通过smart自带的函数获取文件后缀,将这些组合起来上传即可。
|