SmartUpload上传组件实现文件的上传和下载功能
来源:互联网 发布:淘宝卖家入门教程 编辑:程序博客网 时间:2024/05/16 08:59
做应用开发,无论是前台还是后台都离不开对图片的上传和下载,这样不仅有利于用户之间的交流,共享,把图片下载到本地后更有利于观看浏览,减少网上数据通信量,提高浏览速度。在开发中我就遇到了对图片的操作,后台需要将对应的图片上传到服务器上,最后在客户端查看显示。在此过程中,用的是SmartUpload组件,简单实用。同时,也可以尝试fileUpload,也可以实现上传下载功能,只是使用起来很麻烦,所以建议用SmartUpload组件。下面就详细介绍下smartupload的用法。以下将实现这样的功能:将一张大图片上传到服务器上,并压缩成一张小尺寸的,以相同的名称分别存在两个文件夹下,需要显示的时候可以分别读取各自文件夹。好了,现在开始实现详细过程如下:
smartupload本身是系统提供的一个jar包,用户可以直接将包放到classpath下,也可以将包直接复制到TOMCAT_HOME\lib目录中,而且必须使用HTML提供的file控件,<form>也必须用enctype进行封装,表示表单将按照二进制的方式提交。因此其他的非表单控件的内容便无法使用request获取了,必须通过Smartupload类中提供的getRequest()方法来取得全部的请求参数。
在aa.jsp中实现浏览选择图片功能:主要代码:<form name="form" action="Add.jsp" method="post" enctype="multipart/form-data" onsubmit="return yan()" >
<tr>
<td nowrap align="right" width="13%">选择图像:</td>
<td width="41%">
<input id="assphoto" name="badgeimage" type="file" size="40" style="width:250px" class="text"/>
<span class="red">图片为100*100</span>
</td>
</tr>
<input type="submit" value="上传" class="button" />
<input type="reset" value="取消" class="button"/>
</form>
在Add.jsp中实现上传功能。
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="com.Upload.PictureName.IPTimeStamp" %>
<%@ page import="java.io.File"%>
<%@ page import="java.applet.Applet" %>
<%@ page import="java.awt.*" %>
<%@ page import="javax.imageio.*" %>
<%@ page import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*, java.sql.*,com.jspsmart.upload.*,java.util.*"%>
<jsp:useBean id="dataOption" class="com.Carrie.dao.DataOption"></jsp:useBean>
<jsp:useBean id="trans" class="com.Carrie.common.Trans"></jsp:useBean>
<html>
<head>
</head>
<body>
<%
String bigimageAddress=application.getRealPath("/"); //
String smallimageAddress="uploadimage\\bigImage\\";//原图保存的路径
String smallimageAddress1="uploadimage\\smallImage\\";//压缩后小图片的保存的根目录的路径
SmartUpload smart = new SmartUpload();
smart.initialize(pageContext);
smart.upload();
String badgeid=smart.getRequest().getParameter("badgeid");
String badgename=smart.getRequest().getParameter("badgename");
String badgeexplain=smart.getRequest().getParameter("badgeexplain");
IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr()); //生成的一组随机数
String ext = smart.getFiles().getFile(0).getFileExt(); //获取的上传文件的格式
String fileName = its.getIPTimeRand()+"."+ext; //对上传的文件重新命名,若前后两文件重名则后者把前者覆盖
// System.out.println(fileName);
smart.getFiles().getFile(0).saveAs(bigimageAddress+smallimageAddress+fileName); //原图保存
String playerheadadr = bigimageAddress+smallimageAddress+fileName;
String url=bigimageAddress+smallimageAddress1;
java.io.File file = new java.io.File(playerheadadr);
String newurladd = url+fileName;
Image src = javax.imageio.ImageIO.read(file);
// 图片压缩
float tagsize=50;
int old_w=src.getWidth(null); //得到源图宽
int old_h=src.getHeight(null);
int new_w=0;
int new_h=0;
//得到源图长
int tempsize;
float tempdouble;
if(old_w>old_h){
tempdouble=old_w/tagsize;
}else{
tempdouble=old_h/tagsize;
}
new_w=Math.round(old_w/tempdouble);
new_h=Math.round(old_h/tempdouble);//计算新图长宽
Graphics2D g2D=null;
BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_4BYTE_ABGR_PRE);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图
ImageIO.write(tag, "png", new File(newurladd)); //压缩后保存新图
/*g2D = (Graphics2D) tag.getGraphics();
g2D.drawImage(src, 0, 0, null);
for(int i=0;i<new_w;i++){
for(int j=0;j<new_h;j++){
int rgb=tag.getRGB(i, j);
if(isBackPixel(rgb)){
tag.setRGB(i, j,0);
}
}
}
g2D.drawImage(tag, 0, 0, null); */
// FileOutputStream newimage=new FileOutputStream(newurladd); //输出到文件流
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
// encoder.encode(tag); //近JPEG编码
// newimage.close();
String badgeimage = fileName;
// out.println(newurladd);
try{
int outputflag=dataOption.InsertBadgeInfo(badgeid,badgename,badgeexplain,badgeimage); //添加到数据库并得到返回值判断
if(outputflag==2){
out.print("<h2>"+"该图已被添加!!!"+"</h2>");
%>
<input type="button" value="返回" class="button" onclick="window.history.go(-1)"/>
<%
}else if(outputflag==3){
out.print("<h2>"+"图片添加失败!!!"+"</h2>");
%>
<input type="button" value="返回" class="button" onclick="window.history.go(-1)"/>
<%
}else {
response.sendRedirect("../lBdge.jsp");
}
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>
说明:对于其中的图片压缩的方法,网上都有很详细的案例。这里的压缩成的图片并不是高清的,没有原图清晰,有锯齿状的边,这种方法不完美,还需要继续处理!
同时附上IPTimeStamp类,这是从网上查找,最后综合成的。个人觉得可以自己写个简单的,完全不用这么麻烦!地址:http://download.csdn.net/detail/kdsde/5130297
- SmartUpload上传组件实现文件的上传和下载功能
- SmartUpload组件实现文件的上传和下载
- SmartUpload实现文件上传和下载
- 运用SmartUpload 组件实现文件和图片的上传
- SmartUpload组件实现文件上传
- smartupload实现文件的上传、下载
- Smartupload 实现文件的上传与下载
- smartupload 上传和下载文件
- smartUpload文件上传组件
- smartupload组件上传文件
- 使用smartUpload实现文件的上传与下载
- smartupload组件轻松实现多文件上传,单文件下载,多文件下载。
- 文件上传和下载(三)--【SmartUpload】
- jsp文件上传SmartUpload组件
- SmartUpload组件控制文件上传
- SmartUpload 文件的上传
- 使用Cos组件实现文件的上传和下载
- 用SmartUpload实现文件上传
- .js文件打开出错问题解决
- 关闭浏览器,和浏览器禁用cookie时Session处理的方法
- ucos源码分析------OSMemCreate()
- mysql用sql语句复制表
- Java学习笔记(持续更新)
- SmartUpload上传组件实现文件的上传和下载功能
- ant+svn+tomcat实现自动构建
- 命名空间
- Segment
- 数据结构 学习笔记之:结构体及其所定义变量的内存分配的问题
- IOS中输入框被软键盘遮挡的解决办法
- oracle四种分区表
- android4.0.3校准屏幕和隐藏statusbar
- 谈谈Zopfli