首先要说的是网上到处都是jspsmartupload和smartupload的包和讲解问档。多数都是直接将其中的类简单的描述了一些,个人觉得这些对于熟悉java开发的人来说,用处不大。
还有一个问题是:关于smartupload的包放在什么地方。 在开发工具中如MyEclipse或者Eclipse中Build-path然后Configure-build-path然后add-extends-jar这样就可以了。至于在Tomcat目录下的复杂配置查看此文
图片上传最终还是成功了,使用的是魔乐科技李兴华老师提供的smartupload包。
上传文件的步骤:
1.实例化SmartUpLoad实例
2.初始化上传操作
3.准备上传文件
4.上传文件
在jsp页面导入包特别重要。
- <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
- <%@ page language="java" import="org.lxh.smart.*" %>
- <%@ page language="java" import="java.io.File"%>
- <%@ page language="java" import="org.lxh.servlet.*" %>
文件上传可以是单个文件也可以是多个文件,至于方法的使用在开发工具中虽然不能看到源代码,但是每一个类的方法和属性都是可以看到了,结合JavaSE的API基本上都可以猜测和测试出每一个方法的基本功能,还有谷歌和百度在手边问题迎刃而解。
还是遇到了一些问题:
1.文件存放的路径,Web服务器的Webpps目录下用户自己建立的上传文件存储目录
2.获得上传文件的目录:
- String realPath = application.getRealPath(File.separator
- + File.separator + "upload" + File.separator
- + File.separator);
- System.out.println(realPath);
3.还可以直接使用新建的上传文件目录即可。
- smart.save(realPath);
- //smart.save("upload");
同样可以通过。
4.上传文件时同名文件会覆盖,解决办法是对每一个上传文件重命名。可以使用时间,IP,随机数共同产生一个字符串来作为文件名
5.在smartupload
- <%@ page language="java" import="org.lxh.smart.File"%>
- <%@ page language="java" import="org.lxh.smart.Files"%>
- <%@ page language="java" import="org.lxh.servlet.*"%>
有File和Files类,因为在生成新的文件名时使用到了File.separator导致文件操作不正确,知识问题出现是因为导入包是出现了同名类,使用java.io.File.separator最终解决了该问题。
6.产生新的文件名标识和文件上传的文件路径
- //获取上传的文件的扩展名
- File f=fs.getFile(i);
- String ext = f.getFileExt();
- //使用时间戳生成的文件名
- String upFileName = its.getIPTimeRand();
- //使用原文件的扩展名,上传后的文件全名
- String realFileName = upFileName +"."+ ext;
- System.out.println(realFileName);
- System.out.println(this.getServletContext().getRealPath("/") + "upload"
- + java.io.File.separator + realFileName);
使用到时间戳标识来产生一个唯一表示文件的文件名。
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/932096,如需转载请自行联系原作者