maven配置smartupload_SmartUpload文件上传组件的使用教程
在项目中使用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文件上传组件的使用教程相关推荐
- SmartUpload文件上传组件的使用教程
在项目中使用SmartUpload组件可以进行文件的上传和下载操作 使用步骤 1.导入jar包,进行build path操作 2.编写文件上传页面,代码如下 <form action=" ...
- Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?
在最初的 http 协议中,没有上传文件方面的功能.RFC1867("Form-based File Upload in HTML".) 为 http 协议添加了这个功能.客户端的 ...
- 关于element-ui的upload文件上传组件的使用技巧总结
关于element-ui的upload文件上传组件的技巧总结 简单说几点: uploader组件使用中的几个常见问题和解答 upload文件类型.大小的筛选: 多文件上传的配置: 3.文件列表的相关操 ...
- 多文件上传组件FineUploader使用心得
原文 多文件上传组件FineUploader使用心得 做Web开发的童鞋都知道,需要经常从客户端上传文件到服务端,当然,你可以使用<input type="file"/> ...
- layui多文件上传讲解_Laravel 使用 layui 文件上传组件批量上传图片
摘要 Laravel 使用 layui 文件上传组件批量上传图片. layui是一款经典国产模块化前端UI框架,首先看看官方的介绍: layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI ...
- vue 文件上传组件封装
增加图片缩略图以及Word.txt文档在线预览 文件上传组件完整代码 <template><div><el-uploadclass="upload-demo&q ...
- JS - 文件上传组件WebUploader使用详解1(带进度的文件上传
一.基本介绍 1,什么是 WebUploader? WebUploader 是由百度公司团队开发的一个以 HTML5 为主,FLASH 为辅的现代文件上传组件. 官网地址:http://fex.bai ...
- 使用 Apache的文件上传组件(common-fileupload)来实现文件的上传
文章目录 一.前言/先导 二.步骤 三.源码 四.测试结果 五.文件的下载 一.前言/先导 maven的依赖: 注意:common-fileupload,它需要依赖于 commons-io组件: &l ...
- Vue:利用Plupload插件封装文件上传组件
接上回<Plupload插件>,已经尝试将Plupload插件引入到HTML页面中,并进行参数配置,然后联合后端接口进行调试,完成了文件上传的工作.但是在Vue项目的开发中,我们更想将它封 ...
- 1.6 文件上传组件
1.6 文件上传组件 1.6.1 基本形制 <input type="file" name="myfile"/> form的完整形制如下,它必须设定 ...
最新文章
- Android架构篇-1 项目组织架构
- idea数字栏符号含义_关于铂金钻戒的几个常见数字符号含义,你都了解吗
- 天天象棋 残局闯关 第20关
- php 查看当前字符编码,PHP检测当前字符编码并转码
- 记一次小型生产事故 | BeyondComper跨编码方式复制文件内容
- SAP云平台上两个ABAP系统实例之间的互连
- Spring MVC中使用 Swagger2 构建Restful API
- Qt creator5.7 OpenCV249之pyrDown函数(含源码下载)
- 想学 AI,先搞懂这件小事!
- Hexo + github 打造个人博客
- elm的 java包_Elm架构
- 大学生期末网页制作代码以及网页设计排版技巧
- html中的分页条怎么写,html如何制作分页
- java项目:基于springboot高校党建管理系统(springboot+vue+mysql+redis) 1010
- QT创建一个excel文件(通过save as 方法)
- ROS三轮全向轮移动底盘 (01)
- ClickHouse(一)简介、安装、基本操作、引擎
- Dispatch I/O
- 电信天翼云服务器性能,中国电信天翼云获可信云云主机“五星+”级别认证
- csgo自建局域网服务器,CSGO(KZ模式)服务器搭建常见问题答疑