java uploadify上传图片并预览

前一篇文章可以看到对jquery uploadify的属性的讲解,这里给出具体的java代码实现,代码基于servlet,实现了上传图片并预览的效果,不多说,上代码

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!--引入jquery.js-->
<script src="scripts/jquery-1.10.2.min.js"></script>  
<!--引入uploadify.js-->
<script src="scripts/jquery.uploadify.min.js" type="text/javascript"></script>
<!--引入uploadify.css-->
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />  
<!--引入自己写的css-->
<link href="css/customer.css" rel="stylesheet" type="text/css" />  

<script type="text/javascript">  
        $(function() {  
        	 $("#upload_org_code").uploadify({
        	 ‘auto‘ :true,
        	 ‘buttonClass‘:‘mybutton‘,
        	 ‘buttonCursor‘:‘hand‘,
        	 ‘buttonText‘    : ‘选择图片‘,
        	 ‘fileSizeLimit‘ : ‘2MB‘,
                 ‘height‘        : 27,
                 ‘width‘         : 80, 
                 ‘fileTypeExts‘  : ‘*.jpg;*.jpge;*.gif;*.png‘,
                 ‘fileTypeDesc‘  :‘请选择jpg,jpge,jif,png后缀结尾的图片‘,
                 ‘progressData‘:‘speed‘,
                 ‘queueID‘:‘some_file_queue‘,
                 ‘removeCompleted‘:false,
                 ‘queueSizeLimit‘:2,
                 ‘removeTimeout‘:1,
                 ‘swf‘           : ‘${pageContext.request.contextPath}/scripts/uploadify.swf‘,
                 <!--这是关键,上传后台处理的servlet地址-->
                 ‘uploader‘      : ‘${pageContext.request.contextPath}/uploadifyServlet‘,
                 ‘multi‘         : false,
                 //加上此句会重写onSelectError方法【需要重写的事件】
                 ‘overrideEvents‘: [‘onSelectError‘, ‘onDialogClose‘,‘onCancel‘,‘onClearQueue‘],
                 ‘onCancel‘:function(file){
                	console.log(file.name); 
                 },
                 
                 ‘onClearQueue‘:function(queueItemCount){
                	 console.log(queueItemCount);
                 },
                 ‘onDestroy‘:function(){
                	console.log(‘destory‘); 
                 },
                 ‘onDialogClose‘:function(queueData){
                	 console.log(queueData.filesSelected );
                	 console.log(queueData.filesQueued  );
                 },
                 ‘onUploadSuccess‘:function(file,data,response){
                     $(‘#‘ + file.id).find(‘.data‘).html(‘‘);
                     console.log(‘data=‘+data);
                     $("#upload_org_code_name").val(data);
                     <!--这是关键,预览后台处理的servlet地址-->
                     $("#upload_org_code_img").attr("src","${pageContext.request.contextPath}/getImgServlet?file="+data);  
                     $("#upload_org_code_img").show();
                 },
               
                 //返回一个错误,选择文件的时候触发
                 ‘onSelectError‘:function(file, errorCode, errorMsg){
                     switch(errorCode) {
                         case -110:
                             alert("文件 ["+file.name+"] 大小超出系统限制的" + jQuery(‘#upload_org_code‘).uploadify(‘settings‘, ‘fileSizeLimit‘) + "大小!");
                             break;
                         case -120:
                             alert("文件 ["+file.name+"] 大小异常!");
                             break;
                         case -130:
                             alert("文件 ["+file.name+"] 类型不正确!");
                             break;
                     }
                 },
             });
            
        });  
</script>  
</head>
<body>
<!--用于图片预览的显示-->
<img style="display: none" id="upload_org_code_img" src="" width="100" height="100"/>

<input type="file" name="upload_org_code" id="upload_org_code"/>
<!--自定义的一个queue-->
<div id="some_file_queue">

</div>

 <!--一些操作啦-->
     <a href="javascript:jQuery(‘#upload_org_code‘).uploadify(‘upload‘,‘*‘);">上传</a> 
      <a href="javascript:$(‘#upload_org_code‘).uploadify(‘cancel‘,‘*‘)">取消上传</a>  
      <a href="javascript:$(‘#upload_org_code‘).uploadify(‘destroy‘)">destory</a>  
      
</body>
</html>

其中,js中定义了上传处理的uploadifyServlet地址,所以下一步就是编写改servlet了

uploadifyServlet.java

public class uploadifyServlet extends HttpServlet {

	   private String configPath="d:/image/";
	    
	  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	        this.doPost(request, response);
	    }
	 
	    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    	  String ret_fileName = null;//返回给前端已修改的图片名称
	    	  request.setCharacterEncoding("UTF-8");
	          response.setContentType("text/html; charset=UTF-8");
	          PrintWriter out = response.getWriter();
	          // 文件保存目录路径
	          String savePath = configPath; 
	   
	          DiskFileItemFactory factory = new DiskFileItemFactory();
	          ServletFileUpload upload = new ServletFileUpload(factory);
	          upload.setHeaderEncoding("UTF-8");
	          try {
	              List<?> items = upload.parseRequest(request);
	              Iterator<?> itr = items.iterator();
	   
	              while (itr.hasNext()) {
	            	  
	                  DiskFileItem item   = (DiskFileItem) itr.next();
	                  String fileName = item.getName();
	                  if(fileName!=null){
	                      ret_fileName  = fileName;
	                  }
	                  if (!item.isFormField()) {
	                	  try {
	                          File uploadedFile = new File(savePath,fileName);
	   
	                          OutputStream os = new FileOutputStream(uploadedFile);
	                          InputStream is = item.getInputStream();
	                          byte buf[] = new byte[1024];// 可以修改 1024 以提高读取速度
	                          int length = 0;
	                          while ((length = is.read(buf)) > 0) {
	                              os.write(buf, 0, length);
	                          }
	                          // 关闭流
	                          os.flush();
	                          os.close();
	                          is.close();
	                      } catch (Exception e) {
	                          e.printStackTrace();
	                      }
	                  }
                    
	              }
	   
	          } catch (FileUploadException e) {
	              e.printStackTrace();
	          }
	          //将已修改的图片名称返回前端
	          out.print(ret_fileName);
	          out.flush();
	          out.close();

	    }
}

上述代码的意思很简单,将上传的文件放入指定的文件夹,并返回图片的名称。

到此为止,上传就结束了,下面是预览。

在onUploadSuccess中,我们得到了上传成功图片的返回的图片名称,其中我们定义了实现预览效果的后台servlet,getImgServlet

下面给出改servlet的代码

public class getImg extends HttpServlet {

	   private String configPath="d:/image/";
	    
	  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	        this.doPost(request, response);
	    }
	 
	    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    	 String file = request.getParameter("file");
	         File pic = new File(configPath+file);
	  
	         FileInputStream fis = new FileInputStream(pic);
	         OutputStream os = response.getOutputStream();
	         try {
	             int count = 0;
	             byte[] buffer = new byte[1024 * 1024];
	             while ((count = fis.read(buffer)) != -1)
	                 os.write(buffer, 0, count);
	             os.flush();
	         } catch (IOException e) {
	             e.printStackTrace();
	         } finally {
	             if (os != null)
	                 os.close();
	             if (fis != null)
	                 fis.close();
	         }
	          
	    }
}

上述代码很简单,得到传过来的文件名之后,直接发送文件流过去,实现图片显示

具体的项目包地址如下,大家可直接下载运行:

http://yun.baidu.com/share/link?shareid=702477080&uk=2836507213

时间: 2024-12-28 00:47:28

java uploadify上传图片并预览的相关文章

Uploadify v3.2.1 上传图片并预览

前端JSP: <script type="text/javascript"> $(function() { $("#upload_org_code").uploadify({ 'height' : 27, 'width' : 80, 'buttonText' : '选择图片', 'swf' : '${pageContext.request.contextPath}/js/uploadify/uploadify.swf', 'uploader' : '${

Java实现图片裁剪预览功能

Java实现图片裁剪预览功能 在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章! 需要插件:jQuery Jcrop 后端代码: package org.csg.upload; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import 

Java实现web在线预览office文档与pdf文档实例

https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档与pdf文档实例, 1.首先我们需要找到可以把office转换成pdf的方法,查找资料发现有openoffice这一软件可以把office转换成pdf,这一软件先下载下来,然后记住自己安装的在那个位置.然后在cmd环境下进入安装目录的program目 云计算 云服务器ECS 大数据 建站 备案 文档

上传图片带预览功能兼容IE和火狐等主流浏览器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

2016/4/19 ①单个文件上传 ②上传图片后 预览图片

1,f1.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 作业:在网上找上传图片预览的代码 上传服务器 再预览--> <form action="f1chuli.php&q

js实现上传图片本地预览功能

js: /**     * 上传图片本地预览方法     * @param {Object} fileObj 上传文件file的id元素  fresh-fileToUpload      * @param {Object} previewObj 上传图片的预览id元素  fresh-send-preview-img     * @param {Object} localImg 预览图片的父层id元素  fresh-send-preview-imgvideo     */    fs.setIma

Ajax 实现上传图片即时预览功能

本文为原创,转载请注明:http://www.pm-road.com/index.php/2014/07/31/50 很多网站在上传头像或照片的时候,都会有一个预览功能,结合自身体验将该功能实现一下:要求:图片保存到数据库点击查看实现ajax上传图片即时预览另一种方法(简单方法) 之前,我在做项目的时候,有一个功能就是要求上传的图片要即时显示,很多网站都会有这样的案例,其中的代码逻辑大多为把图片传到服务器上之后,返回图片的 物理路径,不过,我们当时使用的框架为ExtJS 4.1,而且因为涉及一些

HTML5上传图片并预览

一个简易的实现: <!DOCTYPE html> <html> <head> <title>HTML5上传图片并预览</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery

Ajax 上传图片并预览

1. 直接上最简单的 一种 ajax 异步上传图片,并预览 html: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>图片上传 | cookie</title> 6 </head> 7 <body