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

简介: 在项目中使用SmartUpload组件可以进行文件的上传和下载操作使用步骤1.导入jar包,进行build path操作2.编写文件上传页面,代码如下   请选择要上传的文件:     3.

 

在项目中使用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循环来对文件进行重命名和保存的操作

 

相关文章
|
8月前
|
PHP
thinkphp中自定义文件上传
thinkphp中自定义文件上传
44 0
|
3月前
|
监控 前端开发 安全
C#一分钟浅谈:文件上传与下载功能实现
【10月更文挑战第2天】在Web应用开发中,文件的上传与下载是常见需求。本文从基础入手,详细讲解如何在C#环境下实现文件上传与下载。首先介绍前端表单设计及后端接收保存方法,使用`&lt;input type=&quot;file&quot;&gt;`与`IFormFile`接口;接着探讨错误处理与优化策略,如安全性验证和路径管理;最后讲解文件下载的基本步骤,包括确定文件位置、设置响应头及发送文件流。此外,还提供了进阶技巧,如并发处理、大文件分块上传及进度监控,帮助开发者构建更健壮的应用系统。
164 15
|
3月前
|
存储 API PHP
兰空图床Typecho上传插件LskyPluginTypechoV2安装及使用教程
【10月更文挑战第1天】本插件基于isYangs、泽泽站长、兔子君、冷寂等前辈的作品,适用于Typecho。教程包括获取API Token、设置插件及上传图片等步骤。
109 0
|
JavaScript 前端开发 Java
如何使用Springboot实现文件上传和下载,并为其添加实时进度条的功能
如何使用Springboot实现文件上传和下载,并为其添加实时进度条的功能
411 0
|
JavaScript
vue项目上传到宝塔刷新404?(详细教程)
vue项目上传到宝塔刷新404?(详细教程)
614 0
|
JavaScript
vue项目上传服务器之后上传图片功能报错问题解决方案
vue项目上传服务器之后上传图片功能报错问题解决方案
135 0
|
存储 前端开发 JavaScript
后端文件上传以及下载功能实现
上一章讲到前端文件下载功能的实现,之前也讲过前端文件上传功能的实现,这一章就讲一下后端怎么接收前端上传的文件,以及怎么实现文件下载功能。
434 0
|
JavaScript 前端开发
Vue中 实现静态文件下载(以下载表格为例)
Vue中 实现静态文件下载(以下载表格为例)
1450 0
Vue中 实现静态文件下载(以下载表格为例)
|
Java 网络安全 开发工具
我做了款组件上传的插件
我做了款组件上传的插件
141 0
|
Java
【不用框架】文件上传和下载(一)
文件上传就是把用户的信息保存起来。
155 0
【不用框架】文件上传和下载(一)

热门文章

最新文章