在项目中使用SmartUpload组件可以进行文件的上传和下载操作

使用步骤

1.导入jar包,进行build path操作

2.编写文件上传页面,代码如下

请选择要上传的文件:

3.建立upload文件夹,文件夹在web跟目录下:

4.实例化SmartUpload对象:

5.初始化上传操作;

6.准备上传

7.保存文件

代码如下:

//1.实例化SmartUpload对象

SmartUpload smart=new SmartUpload();

//2.初始化上传操作

smart.initialize(pageContext);

//3.上传准备

smart.upload();

//保存文件

smart.save("upload");

%>

单是现在出现一个问题,表单使用enctype="multipart/form-data"进行了二进制的封装,无法使用request.getParameter()方法获取值了,而是二进制的byte流了.

上传页面代码如下:

姓名:

照片:

处理请求页面的代码如下:

//1.实例化SmartUpload对象

SmartUpload smart=new SmartUpload();

//2.初始化上传操作

smart.initialize(pageContext);

//3.上传准备

smart.upload();

//保存文件

smart.save("upload");

request.setCharacterEncoding("UTF-8");

%>

使用传统的request.getParameter("uname") 已经无法获取到用户输入的信息类.

这个时候如果想要获取表单中的请求值,只有使用SmartUpload中的方法getRequest.getParameter()方法进行获取

处理页面代码如下:

//1.实例化SmartUpload对象

SmartUpload smart=new SmartUpload();

//2.初始化上传操作

smart.initialize(pageContext);

//3.上传准备

smart.upload();

//保存文件

smart.save("upload");

String name=smart.getRequest().getParameter("uname");

name=new String(name.getBytes(),"UTF-8");

%>

但是现在发现另一个问题,我们多次上传一个文件,我们的文件夹里面始终就保存了一个,文件本身的覆盖导致的,

解决方法,为我们上传的文件自动命名

1.IP+时间戳+三位随机数

建立一个类,专门完成文件自动命名

处理文件保存页面的代码如下:

//1.实例化SmartUpload对象

SmartUpload smart=new SmartUpload();

//2.初始化上传操作

smart.initialize(pageContext);

//3.上传准备

smart.upload();

//获取客户端的IP地址

String ip=request.getRemoteAddr();

/*IpTimeStamp是自己定义的一个类,类

中有一个获得(IP+时间戳+三位随机数)字符串的方法*/

IpTimeStamp its=new IpTimeStamp(ip);

/*获取文件的扩展名.smart.getFiles()是获取我们上传的多

个文件,getFile(0).这里面的0是下标getFileExt()是获取文件的扩展名*/

String ext =smart.getFiles().getFile(0).getFileExt();

//拼接文件名称

String fileName=its.getIpTimeRand()+"."+ext;

//java.io.File.separator是系统分隔符,win7是"\" 这是将文件保存为什么名字

smart.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator+fileName);

String name=smart.getRequest().getParameter("uname");

name=new String(name.getBytes(),"UTF-8");

//保存文件

smart.save("upload");

%>

如果想要限制用户上传文件的扩展名

假如我们一次性上传多个文件,可以使用getFiles()来获取我们上传的文件getFiles()方法返回的是一个数组

smart.getFiles().getFile(0).getFileName()//获取文件名

//matchs()是String的方法,用来匹配正则表达式

通过smart.getFiles().getFile(0).getFileName().matches(“^\\w+.(jpg|gif)$”) 来对上传的文件进行验证,后缀匹配,form表单才能提交.

文件的批量上传:

需要用到smart的方法,getCount();来获取上传来多少个文件

例如:smart.getFiles().getCount(),来获取批量上传的文件数量.再使用for循环来对文件进行重命名和保存的操作

maven配置smartupload_SmartUpload文件上传组件的使用教程相关推荐

  1. SmartUpload文件上传组件的使用教程

    在项目中使用SmartUpload组件可以进行文件的上传和下载操作 使用步骤 1.导入jar包,进行build path操作 2.编写文件上传页面,代码如下 <form action=" ...

  2. Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?

    在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".) 为 http 协议添加了这个功能.客户端的 ...

  3. 关于element-ui的upload文件上传组件的使用技巧总结

    关于element-ui的upload文件上传组件的技巧总结 简单说几点: uploader组件使用中的几个常见问题和解答 upload文件类型.大小的筛选: 多文件上传的配置: 3.文件列表的相关操 ...

  4. 多文件上传组件FineUploader使用心得

    原文 多文件上传组件FineUploader使用心得 做Web开发的童鞋都知道,需要经常从客户端上传文件到服务端,当然,你可以使用<input type="file"/> ...

  5. layui多文件上传讲解_Laravel 使用 layui 文件上传组件批量上传图片

    摘要 Laravel 使用 layui 文件上传组件批量上传图片. layui是一款经典国产模块化前端UI框架,首先看看官方的介绍: layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI ...

  6. vue 文件上传组件封装

    增加图片缩略图以及Word.txt文档在线预览 文件上传组件完整代码 <template><div><el-uploadclass="upload-demo&q ...

  7. JS - 文件上传组件WebUploader使用详解1(带进度的文件上传

    一.基本介绍 1,什么是 WebUploader? WebUploader 是由百度公司团队开发的一个以 HTML5 为主,FLASH 为辅的现代文件上传组件. 官网地址:http://fex.bai ...

  8. 使用 Apache的文件上传组件(common-fileupload)来实现文件的上传

    文章目录 一.前言/先导 二.步骤 三.源码 四.测试结果 五.文件的下载 一.前言/先导 maven的依赖: 注意:common-fileupload,它需要依赖于 commons-io组件: &l ...

  9. Vue:利用Plupload插件封装文件上传组件

    接上回<Plupload插件>,已经尝试将Plupload插件引入到HTML页面中,并进行参数配置,然后联合后端接口进行调试,完成了文件上传的工作.但是在Vue项目的开发中,我们更想将它封 ...

  10. 1.6 文件上传组件

    1.6 文件上传组件 1.6.1 基本形制 <input type="file" name="myfile"/> form的完整形制如下,它必须设定 ...

最新文章

  1. Android架构篇-1 项目组织架构
  2. idea数字栏符号含义_关于铂金钻戒的几个常见数字符号含义,你都了解吗
  3. 天天象棋 残局闯关 第20关
  4. php 查看当前字符编码,PHP检测当前字符编码并转码
  5. 记一次小型生产事故 | BeyondComper跨编码方式复制文件内容
  6. SAP云平台上两个ABAP系统实例之间的互连
  7. Spring MVC中使用 Swagger2 构建Restful API
  8. Qt creator5.7 OpenCV249之pyrDown函数(含源码下载)
  9. 想学 AI,先搞懂这件小事!
  10. Hexo + github 打造个人博客
  11. elm的 java包_Elm架构
  12. 大学生期末网页制作代码以及网页设计排版技巧
  13. html中的分页条怎么写,html如何制作分页
  14. java项目:基于springboot高校党建管理系统(springboot+vue+mysql+redis) 1010
  15. QT创建一个excel文件(通过save as 方法)
  16. ROS三轮全向轮移动底盘 (01)
  17. ClickHouse(一)简介、安装、基本操作、引擎
  18. Dispatch I/O
  19. 电信天翼云服务器性能,中国电信天翼云获可信云云主机“五星+”级别认证
  20. csgo自建局域网服务器,CSGO(KZ模式)服务器搭建常见问题答疑

热门文章

  1. anaconda3怎么卸载干净,卸载anaconda3的方法是什么
  2. 树莓派默认登录账号密码
  3. 使用ArcGIS软件进行投影变换和坐标校正
  4. 移动Web UI组件库汇总
  5. 京东android插件化,Flutter 插件开发-接入京东SDK唤醒(ios篇)
  6. 京东优惠价格策略助手
  7. 计算机课程哪个网校比较好,计算机软考在线学习哪个好
  8. 自己开发的小程序如何跳转到京东拼多多小程序产品页面
  9. MOS管、IGBT、BJT的区别
  10. sketch软件_Sketch制作交互流程图,哪种工具最高效?