smartupload实现文件上传

简介:

 首先要说的是网上到处都是jspsmartupload和smartupload的包和讲解问档。多数都是直接将其中的类简单的描述了一些,个人觉得这些对于熟悉java开发的人来说,用处不大。

    还有一个问题是:关于smartupload的包放在什么地方。 在开发工具中如MyEclipse或者Eclipse中Build-path然后Configure-build-path然后add-extends-jar这样就可以了。至于在Tomcat目录下的复杂配置查看此文 

    图片上传最终还是成功了,使用的是魔乐科技李兴华老师提供的smartupload包。



  上传文件的步骤:

      1.实例化SmartUpLoad实例

      2.初始化上传操作

      3.准备上传文件

      4.上传文件

   在jsp页面导入包特别重要。


 
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> 
  2. <%@ page language="java" import="org.lxh.smart.*" %> 
  3. <%@ page language="java" import="java.io.File"%> 
  4. <%@ page language="java" import="org.lxh.servlet.*" %> 

   文件上传可以是单个文件也可以是多个文件,至于方法的使用在开发工具中虽然不能看到源代码,但是每一个类的方法和属性都是可以看到了,结合JavaSE的API基本上都可以猜测和测试出每一个方法的基本功能,还有谷歌和百度在手边问题迎刃而解。



  还是遇到了一些问题:

  1.文件存放的路径,Web服务器的Webpps目录下用户自己建立的上传文件存储目录

  2.获得上传文件的目录:

   

 
  1. String realPath = application.getRealPath(File.separator 
  2.                     + File.separator + "upload" + File.separator 
  3.                     + File.separator); 
  4.             System.out.println(realPath); 

  3.还可以直接使用新建的上传文件目录即可。

  

 
  1. smart.save(realPath); 
  2.             //smart.save("upload"); 

  同样可以通过。

  4.上传文件时同名文件会覆盖,解决办法是对每一个上传文件重命名。可以使用时间,IP,随机数共同产生一个字符串来作为文件名

  5.在smartupload

   

 
  1. <%@ page language="java" import="org.lxh.smart.File"%> 
  2. <%@ page language="java" import="org.lxh.smart.Files"%> 
  3. <%@ page language="java" import="org.lxh.servlet.*"%> 

 有File和Files类,因为在生成新的文件名时使用到了File.separator导致文件操作不正确,知识问题出现是因为导入包是出现了同名类,使用java.io.File.separator最终解决了该问题。

 6.产生新的文件名标识和文件上传的文件路径

  

 
  1. //获取上传的文件的扩展名 
  2.                 File f=fs.getFile(i); 
  3.                 String ext = f.getFileExt(); 
  4.                 //使用时间戳生成的文件名 
  5.                 String upFileName = its.getIPTimeRand(); 
  6.                 //使用原文件的扩展名,上传后的文件全名 
  7.                 String realFileName = upFileName +"."+ ext; 
  8.                 System.out.println(realFileName); 
  9.                 System.out.println(this.getServletContext().getRealPath("/") + "upload" 
  10.                                 + java.io.File.separator + realFileName); 

 使用到时间戳标识来产生一个唯一表示文件的文件名。



本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/932096,如需转载请自行联系原作者

相关文章
|
5月前
|
人工智能 算法 大数据
【天池大赛】历届比赛资料
【天池大赛】历届比赛资料
|
10月前
|
Java Apache Windows
commons-fileupload组件和commons-io组件的详细下载
这篇文章提供了Apache Commons FileUpload和Commons IO组件的详细下载方法,包括下载地址和如何从压缩包中获取相应的jar类库文件。
|
关系型数据库 MySQL Java
MySQL与服务器时区问题实践总结
MySQL与服务器时区问题实践总结
1275 0
|
Java 数据库连接 Nacos
nacos常见问题之启动不了如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
1560 0
|
Python
Python Python-MySQLdb中的DictCursor使用方法简介
Python Python-MySQLdb中的DictCursor使用方法简介
495 0
|
JavaScript
‘node‘ 不是内部或外部命令,也不是可运行的程序
‘node‘ 不是内部或外部命令,也不是可运行的程序
992 0
‘node‘ 不是内部或外部命令,也不是可运行的程序
|
运维 监控 搜索推荐
阿里云林小平:如何实现资源高效运维及成本分析
通过标签功能进行资源运维及精细化的权限管理,实现高效能、低成本的目标。
阿里云林小平:如何实现资源高效运维及成本分析
|
缓存 网络协议 网络架构
ICMP 是个啥破玩意?(二)
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
ICMP 是个啥破玩意?(二)
|
Java 物联网 编译器
HarmonyOS与Android的全面对比
HarmonyOS与Android的全面对比
755 0
HarmonyOS与Android的全面对比
|
Web App开发 移动开发 小程序
Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
支付宝客户端的动态化技术经历三个阶段:现阶段也就是第三阶段是实体组件+部分光栅化的hybrid模式,Cube 就是该模式下的产物。
1326 0
Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述