SmartUpload文件上传组件的使用教程
在项目中使用SmartUpload组件可以进行文件的上传和下载操作
使用步骤
1.导入jar包,进行build path操作
2.编写文件上传页面,代码如下
<form action="smartupload.jsp" method="post" enctype="multipart/form-data">
请选择要上传的文件:<input type="file" name="pic">
<input type="submit" value="上传">
</form>
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流了.
上传页面代码如下:
<form action="smartupload.jsp" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"><br/>
照片:<input type="file" name="pic"><br/>
<input type="submit" value="上传">
</form>
处理请求页面的代码如下:
<%
//1.实例化SmartUpload对象
SmartUpload smart=new SmartUpload();
//2.初始化上传操作
smart.initialize(pageContext);
//3.上传准备
smart.upload();
//保存文件
smart.save("upload");
request.setCharacterEncoding("UTF-8");
%>
<%="姓名是"+request.getParameter("uname") %>
使用传统的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");
%>
<%="姓名是"+name %>
但是现在发现另一个问题,我们多次上传一个文件,我们的文件夹里面始终就保存了一个,文件本身的覆盖导致的,
解决方法,为我们上传的文件自动命名
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");
%>
<%="姓名是"+name %>
如果想要限制用户上传文件的扩展名
假如我们一次性上传多个文件,可以使用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循环来对文件进行重命名和保存的操作
SmartUpload文件上传组件的使用教程相关推荐
- 1.6 文件上传组件
1.6 文件上传组件 1.6.1 基本形制 <input type="file" name="myfile"/> form的完整形制如下,它必须设定 ...
- Bootstrap fileinput.js,最好用的文件上传组件
本篇介绍如何使用bootstrap fileinput.js(最好用的文件上传组件)来进行图片的展示,上传,包括springMVC后端文件保存. 一.demo 二.插件引入 <link ty ...
- fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...
最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...
- ASP中文件上传组件ASPUpload介绍和使用方法
[导读]要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload 要实现该功能,就要利用一些特制的文件 ...
- 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 ...
最新文章
- [转]Android横竖屏切换解决方案
- struct用法_精讲响应式webclient第1篇-响应式非阻塞IO与基础用法
- Linux centos 集群下ssh无密码
- 2015年科技巨头的十个开源产品,不只是.NET、Swift
- Python中变量作用域问题
- ssh 错误: ssh_exchange_identification
- 大数据(11) - kafka的安装与使用
- 重定向 12 21 解析
- 让 Chrome 崩溃的一行 CSS 代码
- AWS CEO Andy Jassy 专访:我们一直思考的是未来 2-5 年的事 | 人物志
- 大学生代跑全新简洁界面单页官网
- 南京大学开源!ResT:高效Transformer架构!
- windows10中git-bash闪退的解决办法
- linux将屏幕输出内容转储到文件,Linux实时将所有输出重定向到文件
- 软件测试用例质量不高?我教你如何编写高质量的测试用例!
- HDU-1251-统计难题(字典树)
- (转)初识suse——linux
- java action url,Java ViewHandler.getActionURL方法代码示例
- 懵圈了,面试官问一个 TCP 连接可发多少个 HTTP 请求?
- vlan端口的三种模式和基本配置
热门文章
- python一行没写完用什么隔离_在CherryPy中请求隔离是如何工作的。我不明白基本的想法...
- 无法启动程序 计算机丢失QT,Win7系统打开程序提示计算机中丢失qt5core.dll如何解决...
- MSE与MAE的区别与如何选择
- 记录运行gpu错误及解决方案
- java第七章多线程_第七章 多线程
- python接口返回json处理_python 接口返回的json字符串实例
- 信息系统项目管理师学习方法
- Failed to convert property value of type java.lang.String to required type java.lang.Integer for pro
- Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符
- 信息系统项目管理师-论文专题(一)论文写作框架+10大管理关系