推荐:jsp利用application统计在线人数的方法这篇文章主要介绍了jsp利用application统计在线人数的方法,代码中备有较为详尽的注释便于理解,是比较实用的技巧,需要的朋友可以参考下 本文实例讲述了jsp利用application统计在线人数的方法。分享给大家供大家参考。 具体实现方法如下: 代码如下:%@ page language=jav

这篇文章主要介绍了java使用smartupload组件实现文件上传的方法,对比分析了使用组件与不使用组件实现文件上传的区别,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了java使用smartupload组件实现文件上传的方法。分享给大家供大家参考。具体分析如下:

文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,这里主要说明smartupload组件上传。

在讲解smartupload上传前,我们先来看看不使用组件是怎么完成上传的原理的?

废话不多说直接上代码:

代码如下:

import java.io.*;

import java.util.*;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUploadTools {

private HttpServletRequest request = null; // 取得HttpServletRequest对象

private List items = null; // 保存全部的上传内容

private Map> params = new HashMap>(); // 保存所有的参数

private Map files = new HashMap();

private int maxSize = 3145728; // 默认的上传文件大小为3MB,3 * 1024 * 1024

public FileUploadTools(HttpServletRequest request, int maxSize,

String tempDir) throws Exception { // 传递request对象、最大上传限制、临时保存目录

this.request = request; // 接收request对象

DiskFileItemFactory factory = new DiskFileItemFactory(); // 创建磁盘工厂

if (tempDir != null) { // 判断是否需要进行临时上传目录

factory.setRepository(new File(tempDir)); // 设置临时文件保存目录

}

ServletFileUpload upload = new ServletFileUpload(factory); // 创建处理工具

if (maxSize > 0) { // 如果给的上传大小限制大于0,则使用新的设置

this.maxSize = maxSize;

}

upload.setFileSizeMax(this.maxSize); // 设置最大上传大小为3MB,3 * 1024 * 1024

try {

this.items = upload.parseRequest(request);// 接收全部内容

} catch (FileUploadException e) {

throw e; // 向上抛出异常

}

this.init(); // 进行初始化操作

}

private void init() { // 初始化参数,区分普通参数或上传文件

Iterator iter = this.items.iterator();

IPTimeStamp its = new IPTimeStamp(this.request.getRemoteAddr()) ;

while (iter.hasNext()) { // 依次取出每一个上传项

FileItem item = iter.next(); // 取出每一个上传的文件

if (item.isFormField()) { // 判断是否是普通的文本参数

String name = item.getFieldName(); // 取得表单的名字

String value = item.getString(); // 取得表单的内容

List temp = null; // 保存内容

if (this.params.containsKey(name)) { // 判断内容是否已经存放

temp = this.params.get(name); // 如果存在则取出

} else { // 不存在

temp = new ArrayList(); // 重新开辟List数组

}

temp.add(value); // 向List数组中设置内容

this.params.put(name, temp); // 向Map中增加内容

} else { // 判断是否是file组件

String fileName = its.getIPTimeRand()

+ "." + item.getName().split("\\.")[1];

this.files.put(fileName, item); // 保存全部的上传文件

}

}

}

public String getParameter(String name) { // 取得一个参数

String ret = null; // 保存返回内容

List temp = this.params.get(name); // 从集合中取出内容

if (temp != null) { // 判断是否可以根据key取出内容

ret = temp.get(0); // 取出里面的内容

}

return ret;

}

public String[] getParameterValues(String name) { // 取得一组上传内容

String ret[] = null; // 保存返回内容

List temp = this.params.get(name); // 根据key取出内容

if (temp != null) { // 避免NullPointerException

ret = temp.toArray(new String[] {});// 将内容变为字符串数组

}

return ret; // 变为字符串数组

}

public Map getUploadFiles() {// 取得全部的上传文件

return this.files; // 得到全部的上传文件

}

public List saveAll(String saveDir) throws IOException { // 保存全部文件,并返回文件名称,所有异常抛出

List names = new ArrayList();

if (this.files.size() > 0) {

Set keys = this.files.keySet(); // 取得全部的key

Iterator iter = keys.iterator(); // 实例化Iterator对象

File saveFile = null; // 定义保存的文件

InputStream input = null; // 定义文件的输入流,用于读取源文件

OutputStream out = null; // 定义文件的输出流,用于保存文件

while (iter.hasNext()) { // 循环取出每一个上传文件

FileItem item = this.files.get(iter.next()); // 依次取出每一个文件

String fileName = new IPTimeStamp(this.request.getRemoteAddr())

.getIPTimeRand()

+ "." + item.getName().split("\\.")[1];

saveFile = new File(saveDir + fileName); // 重新拼凑出新的路径

names.add(fileName); // 保存生成后的文件名称

try {

input = item.getInputStream(); // 取得InputStream

out = new FileOutputStream(saveFile); // 定义输出流保存文件

int temp = 0; // 接收每一个字节

while ((temp = input.read()) != -1) { // 依次读取内容

out.write(temp); // 保存内容

}

} catch (IOException e) { // 捕获异常

throw e; // 异常向上抛出

} finally { // 进行最终的关闭操作

try {

input.close(); // 关闭输入流

out.close(); // 关闭输出流

} catch (IOException e1) {

throw e1;

}

}

}

}

return names; // 返回生成后的文件名称

}

}

上面代码便可以完成无组件上传。

下面开始讲解smartupload

分享:jsp分页显示完整实例这篇文章主要介绍了jsp分页显示完整实例,以文章管理页面为例详细分析了jsp的分页显示实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jsp分页显示的实现方法。分享给大家供大家参考。 具体实现方法如下: 代码如下:%@ page contentType=text/html;

JAVA上传smartupload_java使用smartupload组件实现文件上传的方法相关推荐

  1. java使用smartupload组件实现文件上传的方法

    为什么80%的码农都做不了架构师?>>>    本文实例讲述了java使用smartupload组件实现文件上传的方法.分享给大家供大家参考.具体分析如下:文件上传几乎是所有网站都具 ...

  2. java 断点续传组件_chunkupload 文件上传断点续传组件(java) - 正式发布

    chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. chunkupload实现如下功能: ·  实现断点续传 ·  ...

  3. 使用commons-fileupload-1.2.1.jar等组件实现文件上传

    使用的主要jar包:commons-io-1.3.2.jar包;commons-fileupload-1.2.1.jar包:commons-lang-2.3.jar,在使用组件实现文件上传时候要注意前 ...

  4. layui如何集成文件服务器,layui使用upload组件实现文件上传功能

    layui使用upload组件实现文件上传功能 发布时间:2020-05-22 17:25:25 来源:亿速云 阅读:309 作者:鸽子 背景:页面上一个按钮,点击弹出上传框,从按钮的方法代码开始写: ...

  5. jsp文件通常用common_29.jsp-动态生活之用Commons-FileUpload组件控制文件上传

    sizeMax):设置请求信息实体内容的最大允许的字节数 ★ public List parseRequest(HttpServletRequest req): 解析form表单中的每个字符的数据,返 ...

  6. java web 文件上传工具类_JavaWeb中实现文件上传的方式有哪些?

    上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些. 文件上传的方式Servlet2.5 方式 Servlet3.0 方式 SpringMVC 方式 案例实操 S ...

  7. jquery组件WebUploader文件上传用法详解

    这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

  8. 微信小程序之使用vant-3组件Uploader文件上传

    效果图: 微信小程序之使用vant-3组件Uploader文件上传 1.把vant的weapp包加进来 2.在app.json文件里面"usingComponents"加载进来才能 ...

  9. Element UI 上传组件实现文件上传并附带额外参数

    1. 需求 在使用 ElementUI 的上传组件 el-upload 实现文件上传功能时,如果单文件上传是比较简单的,但是在实际需求中,往往会在上传文件时伴随着一些其他参数,效果如下图: 在上传指定 ...

  10. 原生Servlet文件上传和下载Servlet多个文件上传

    2019独角兽企业重金招聘Python工程师标准>>> 转载:原文连接https://blog.csdn.net/HaHa_Sir/article/details/81744629 ...

最新文章

  1. Python进阶:切片的误区与高级用法
  2. 办公软件Office 2010下载安装介绍
  3. QT+OPENCV实现录屏功能
  4. 蓝桥杯比赛常考算法_备战蓝桥--算法竞赛入门第一章总结
  5. python绘制正态分布函数_学好正态分布有多重要?
  6. vs2015网站发布时,设置页面合并后程序集的文件版本
  7. P2P原理及UDP穿透简单说明
  8. 如何开启outlook邮箱的pop3和smtp_怎么在电子邮件客户端上登录腾讯邮箱(QQ邮箱 )?
  9. php 字符串循环替换字符串,php – 替换字符串中的重复字符串
  10. (3.13)常用知识-元数据函数
  11. 洛谷——P1144 最短路计数
  12. NS3 Tracing System详解
  13. 计算机绘画教案风车,电脑动画美术教案
  14. android图片按比例缩放,Android开发之imageView图片按比例缩放的实现方法
  15. 基于京东云服务器来搭建javaWeb 运行环境
  16. 2013年各大小IT公司待遇,绝对真实,一线数据!
  17. 北通xbox360模拟器_如何将无线Xbox 360控制器连接到计算机
  18. ch不是小写英文字母的c语言代码,函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则...
  19. 为什么网上工商银行安装了U盾不能上网站了?
  20. 破解周鸿祎的战术精要---转自月光宝盒

热门文章

  1. 黑客是如何监视女友出轨信息的,痛心的经历!
  2. 阿里ICON图标,使用教程
  3. Redis下载安装-Windows版本
  4. 【渝粤教育】电大中专跨境电子商务理论与实务答案作业 题库
  5. ExtJs6 combo下拉框分页、提示、换行提示等增强功能
  6. 手把手教你如何获得光学成像系统的PSF(点扩散函数)——从beads成像到处理图像的经验分享
  7. Linux Sentaurus-Silvaco虚拟机使用方法
  8. 计算机系统从本地硬盘启动设置,技嘉主板电脑在BIOS中设置硬盘启动教程
  9. 用c语言打印乘法口诀表
  10. php 四级联动插件,php四级联动