jsp图片上传(commons-fileupload组件)
1.开发环境:
1)eclipse3.2+tomcat5.5;
2)创建dynamic web project;
3)下载:
Commons FileUpload 可以在http://jakarta.apache.org/commons/fileupload/下载
附加的Commons IO 可以在http://jakarta.apache.org/commons/io/下载
将commons-fileupload-1.2.1.jar commons-io-1.4.jar拷贝到WebContent/WEB-INF//lib目录;
2.前台:
<form method="post" enctype="multipart/form-data" action="upload.jsp" target="_blank">
<%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传--%>
<table>
<tr><td>作品:<input type="file" name="upfile" size="50"></td></tr>
<tr><td>作者:<input type="text" name="author" size="22">
标题:<input type="text" name="title" size="22">
<input type="submit" name="submit" value="上 传"></td></tr>
<tr><td>备注:上传的jpg图片(显示扩展名为.jpg)大小不能超过4M!</td></tr>
</table>
</form>
3.后台:
1)引用:
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="org.apache.commons.fileupload.*"%>
2)代码:
String id=null;//上传记录id
String destinationfileName=null;//目标文件名
String author=null;
String title=null;
int flag=0;//上传标志
String uploadPath =request.getSession().getServletContext().getRealPath("/")+"upload/";//图片上传路径
String tempPath = request.getSession().getServletContext().getRealPath("/")+"upload/temp/";//图片临时上传路径
String imagePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/"; // 图片网络相对路径
if(!new File(uploadPath).isDirectory()) new File(uploadPath).mkdirs();// 文件夹不存在就自动创建:
if(!new File(tempPath).isDirectory())new File(tempPath).mkdirs();
try {
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(4194304);// 设置最大文件尺寸,这里是4MB
fu.setSizeThreshold(4096);// 设置缓冲区大小,这里是4kb
fu.setRepositoryPath(tempPath);// 设置临时目录:
List fileItems = fu.parseRequest(request);// 得到所有的文件:
Iterator i = fileItems.iterator();
while(i.hasNext()) {// 依次处理表单中每个域
FileItem file = (FileItem)i.next();// 获得用户上传时文件名
if (file.isFormField()){ //获得文本域表单数据
if("author".equals(file.getFieldName())) author=codeToString(file.getString());
if("title".equals(file.getFieldName())) title=codeToString(file.getString());
continue;//非file域不处理
}
String sourcefileName = file.getName();
if( sourcefileName.endsWith(".jpg")){//生成上传后的文件名
Random rd = new Random();
Calendar time = Calendar.getInstance();
id=String.valueOf(time.get(Calendar.YEAR))
+ String.valueOf(time.get(Calendar.MONTH)+1)
+ String.valueOf(time.get(Calendar.DAY_OF_MONTH))
+ String.valueOf(time.get(Calendar.HOUR_OF_DAY))
+ String.valueOf(time.get(Calendar.MINUTE))
+ String.valueOf(time.get(Calendar.SECOND))
+ String.valueOf(rd.nextInt(100));
destinationfileName=id+".jpg";
File fTmp=new File(uploadPath+destinationfileName);
file.write(fTmp);
//out.print("<img src="+imagePath+"upload/"+destinationfileName+">");
flag=1;//上传成功标志1
}else{out.print("上传失败,只能上传jpg文件!"); }
}
//out.print("<script>location.href=/"demo.jsp/";</script>");
}catch (IOException e) {out.print("上传失败!");}
out.flush();
out.close();
4.主要解决点:
1)问题:form设置enctype="multipart/form-data",request.getParameters函数无法获取表单域值;
2)解决方案:
if (file.isFormField()){ //获得文本域表单数据
if("author".equals(file.getFieldName())) author=codeToString(file.getString());
if("title".equals(file.getFieldName())) title=codeToString(file.getString());
continue;//非file域不处理
}
jsp图片上传(commons-fileupload组件)相关推荐
- 图片上传之fileupload
最近学习了图片上传这个功能,这个功能比较常见,因此来整理一下,了解上传的基本原理,以便后期遇到图片上传功能可以很快上手. 要说图片上传,我们先来说一下图片上传后存储的两种方式:一种是将图片存储到数据库 ...
- jsp图片上传提交前,图片显示在页面上
<divclass="upload_box"> <b>上传图片</b> <inputtype="file"name=& ...
- vue图片上传及压缩组件的封装
vue图片上传及压缩组件的封装 源码地址 使用方法: 先去上面的链接把组件,复制到自己的components文件夹内 1.先下载 cnpm install compressorjs --save-de ...
- jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法
jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...
- js+php在线截图 jquery fileupload.js,另一种图片上传 jquery.fileupload.js
今天遇到另外一种上传图片方法 用jquery.fileupload.js 一个文件类型的元素 $("#fileupload").fileupload({ datatype:&quo ...
- java jsp 图片上传_jsp 图片上传代码
这是一款由flash发送来的文件经过jsp上传并保存到服务器 response.setHeader("Content-Disposition","attachment;f ...
- 微信小程序组件库解析:图片上传与排序组件yImgPro
yunUI是笔者开源的微信小程序功能库.目前其中包含了一些复杂的功能组件.方便使用.未来它将分为组件.样式.js三者合为一体,但分别提供. 本文所用代码皆来源于组件库中的yImgPro组件.详细代码可 ...
- kindeditor图片上传 struts2实现
一.kindeditor以及struts2部署搭建不再赘述,如须要请參考kindeditor用法 Struts2框架搭建 二.kindeditor图片上传所依赖jar包在kindeditor\jsp\ ...
- JSP 文件上传下载系列之二[Commons fileUpload]
前言 关于JSP 文件上传的基础和原理在系列一中有介绍到. 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发. 官方的介绍是: 让添加强壮,高性能的文件到你的se ...
最新文章
- 封装fetch的使用(包含超时处理)
- B-TrunC标准成功加入ITU集群国际标准
- oracle判断数据表的字段内容是否为空
- Fraction+mysql_MySQL 数据类型总结
- 数据分析与挖掘实战-中医证型关联规则挖掘
- golang的new函数_new()和make()函数以及Golang中的示例
- Linux 市场估值将超 70 亿美元,主要原因是安全与开源需求
- cocos creator 多张图片 椭圆运动_信阳液位测量图片
- 排序算法合集 python
- 奥威尔:老大哥在看着你-软件公司十诫
- mapreduce 的partitioner,GroupComparator,KeyComparator,分布式缓存使用示例
- 淘宝天猫京东补流量主要采用的方式是什么呢
- tensorflow笔记之二十八——带掩码的损失函数
- 用户相关的常用搜索转化率指标
- GUI编程入门到游戏实战
- #泰坦尼克号幸存者预测
- OPC是什么意思?OPC Server 和OPC Client又有什么区别呢?
- android多媒体备忘录,基于android的多媒体备忘录的设计与实现
- php sendmail smtp,Sendmail基础配置和smtp命令学习
- gcc/g++ -O 优化选项说明
热门文章
- 大学计算机组成原理试题答案,计算机组成原理试题及答案(大学期末复习资料).doc...
- 纯c语言贪吃蛇,纯C语言贪吃蛇 求助
- 像素测量工具_翼眸科技利用无人机屋顶测量光伏行业应用
- jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
- windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。
- 判断checkbox是否选中并改变值
- Jsp之五 过滤器与监听器
- Java基础05 实施接口
- Mysql Replication 机制
- C# WebService发布与调用方法(转)