上传图片

简介: 上传图片需要注意哪些:1、多图片上传2、单图片上传3、图片上传位置 4、上传图片格式限制 5、上传图片大小限制 6、图片预览7、图片上传错误8、图片的删除File file = new File(“图片路径”); if(file.

上传图片需要注意哪些:

1、多图片上传

2、单图片上传

3、图片上传位置

 4、上传图片格式限制

 5、上传图片大小限制

 6、图片预览

7、图片上传错误

8、图片的删除

File file = new File(“图片路径”);
if(file.exists()) file.delete();

 

样式一、

》 css样式

body {
margin: 20px auto;
padding: 0;
width: 580px;
font: 75%/120% Arial, Helvetica, sans-serif;
text-align:center;
}
h2 {
font: bold 190%/100% Arial, Helvetica, sans-serif;
margin: 0 0 .2em;
}
h2 em {
font: normal 80%/100% Arial, Helvetica, sans-serif;
color: #999999;
}
#largeImg {
border: solid 1px #ccc;
width: 550px;
height: 400px;
padding: 5px;
}
.thumbs img {
border: solid 1px #ccc;
width: 50px;
height: 50px;
padding: 4px;
}
.thumbs img:hover {
border-color: #FF9900;
}

#large{
position:absolute;
z-index:999;
}

<script type="text/javascript">

$(function(){

$(".thumbs a").click(function(){

var imgpath=$(this).attr("href");
var imgtittle=$(this).attr("tittle");

$("#largeImg").attr({
src:imgpath,
alt:imgtittle

});
//阻止a标签的默认行为
return false;
})

 </script>

<h2>图片预览</h2>
<p><img id="largeImg" alt="largeimage" src="img/1.jpg"/></p>
<p class="thumbs">

<a href="img/1.jpg" title="image1" ><img title="image1" src="img/1.jpg"/></a>
<a href="img/2.jpg" title="image2" ><img title="image2" src="img/2.jpg"/></a>
<a href="img/3.jpg" title="image3" ><img title="image3" src="img/3.jpg"/></a>
<a href="img/4.jpg" title="image4" ><img title="image4" src="img/4.jpg"/></a>
<a href="img/5.jpg" title="image5" ><img title="image5" src="img/5.jpg"/></a>

</p>

 

 样式二、鼠标在小图上移动会出现原图

 

 代码如下:在测试过程中发现firefox和opera对鼠标坐标不兼容,有改正,想看详细差别请看我的另一篇文章

 

<script type="text/javascript">

$(function(){

var la=$("#large");
la.hide();
$("#pic1").mousemove(function(event){
/* var event = event || window.event; 等同于下面*/
var event = event ? event:window.event;
var x = event.offsetX || event.layerX;
var y = event.offsetY || event.layerY;
la.css({
top:y,
left:x
}).html('<img src="img/4.jpg">' ).show();
}).mouseout(
function(){
la.hide();
}
)})

 </script>

预览 原图:
<img id="pic1" alt="pic" src="img/4.jpg" width="90" heigth="90">
<div id="large"></div>

 

 

 

 

 

已经编写好的代码:

准备工作需要两个jar包:commons-io-1.2.jar和commons-fileupload-1.2.jar

上传文件需要的里面的三个类可以参考我写的:http://www.cnblogs.com/keyi/p/6288752.html

 注:多文件上传用multiple属性

jsp页面

<%@page import="java.io.File"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

//res_id 资源标识  一般是唯一的,由设定的方法获取。  这里取时间,
String res_id = (new SimpleDateFormat("yyyyMMdd")).format(new Date());

String imageInDate = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());

String imagePath="D:/Javasoftware/apache-tomcat-7.0.70/apache-tomcat-7.0.70/webapps/edu_test_copy/data/upload/images1/"+imageInDate;

File file=new File(imagePath);

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
	<style type="text/css">
	body {
margin: 20px auto;
padding: 0;
width: 580px;
font: 75%/120% Arial, Helvetica, sans-serif;
text-align:center;
}
h2 {
font: bold 190%/100% Arial, Helvetica, sans-serif;
margin: 0 0 .2em;
}
h2 em {
font: normal 80%/100% Arial, Helvetica, sans-serif;
color: #999999;
}
#largeImg {
border: solid 1px #ccc;
width: 550px;
height: 400px;
padding: 5px;
}
.thumbs img {
border: solid 1px #ccc;
width: 50px;
height: 50px;
padding: 4px;
}
.thumbs img:hover {
border-color: #FF9900;
}

#large{
position:absolute;	
z-index:999;
}

</style>
	
  </head>
  
  <body>
  		<h2>图片预览</h2>
<p><img id="largeImg" alt="largeimage" src=""/></p>
<p class="thumbs">
 <%
 if(file.exists()){
	File[] files = file.listFiles();
    if(files.length>0){
	  for(int i=0;i<files.length;i++){
		String fileName = files[i].getName();
		if(fileName.contains(res_id+"_2_")){
		String file_path =  "data/upload/images1/"+imageInDate+"/"+fileName;
		
		%>



<a href="<%=file_path %>" title="<%=file_path %>"><img title="<%=file_path %>" src="<%=file_path %>"/></a>
	<% 
	   }
	 }
 }
 }

  %>
  </p>
      <form action="servlet/UploadImageServlet" method="post" enctype="multipart/form-data">
     
       <input  type="file" name="file" value="文件上传"  multiple><br><br>
       <input type="hidden" name="imageInDate" value="<%=imageInDate%>">
       <input type="hidden" name="res_id" value="<%=res_id%>">
       <input  type="submit" value="提交">
     </form>
  </body>
  
 <script type="text/javascript">

$(function(){

$(".thumbs a").click(function(){

var imgpath=$(this).attr("href");
var imgtittle=$(this).attr("tittle");

$("#largeImg").attr({
src:imgpath,
alt:imgtittle

});
//阻止a标签的默认行为
return false;
})

})

 </script>
</html>

  

servlet页面

package uploadFile;

import java.awt.image.BufferedImage;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang.time.DateFormatUtils;

public class UploadImageServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */

	private ServletConfig config;

	public UploadImageServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		
		PrintWriter out = response.getWriter();
		//只对post提交方式有效
		String visit_from = request.getHeader("referer");
		
		ServletContext ctx=config.getServletContext();
		String temppath=ctx.getRealPath("/tempfiles");
		File tempdir=new File(temppath);
		if(!tempdir.exists()) tempdir.mkdir();
		
		DiskFileItemFactory dfif = new DiskFileItemFactory();
		//以字节为单位,默认10kb即10*1024
		dfif.setSizeThreshold(4*1024);
		dfif.setRepository(tempdir);
		
		ServletFileUpload cfu = new ServletFileUpload(dfif);
		cfu.setSizeMax(3*1024*1024);
		  List fileList = null;
		  try 
		  {
		      fileList = cfu.parseRequest(request);

		  } 
		  catch (FileUploadException e) 
		  {
			  if (e instanceof SizeLimitExceededException)
			  {
			     out.println("<script>alert('图片大小限制为"+3+"M');window.location.href='"+visit_from+"';</script>");
			     return;
			  }
			   e.printStackTrace();
		  }
		  
		  if (fileList == null || fileList.size() == 0)
		  {
			    out.println("<script>alert('请选择上传的图片文件');window.location.href='"+visit_from+"';</script>");
			    out.flush();
				out.close();
			    return;
		  } 
		
		  
		  //非文件表单元素的数据的被保存map中,可以用于获取页面传来的参数。
		  Iterator fileAgain = fileList.iterator();
		    Map paraMap = new Hashtable();
			  while (fileAgain.hasNext())
			  {
				  FileItem fileItem = null;
				  fileItem = (FileItem) fileAgain.next();
				  if (fileItem == null || fileItem.isFormField())
				  {
					 	paraMap.put(fileItem.getFieldName(), new String(fileItem.getString().getBytes("iso8859-1"), "utf-8"));
				  }
			  }
			  System.out.println(paraMap);
			   
			  //图片格式(通过格式来控制文件是图片还是其他文本)

			   Iterator fileItr = fileList.iterator();
			   BufferedImage bi = null;
			   while (fileItr.hasNext()) {
				   FileItem fileItem = null;
				   String path = null;
				   long size = 0;
				   fileItem = (FileItem) fileItr.next();
				   
				   if (fileItem == null || fileItem.isFormField()) continue;
				   
				   path = fileItem.getName();
				   size = fileItem.getSize();
				   if ("".equals(path) || size == 0) continue;
				   
				  
				   String file_name = path.substring(path.lastIndexOf("\\") + 1);
				   
				   
				   String file_type = file_name.substring(file_name.lastIndexOf(".") + 1);
				   
				   String imageType="jpg,png,gif,bmp";
				   
				   //String imageType="jpg,gif,jpeg,png,bmp";
			   
				   if(imageType.indexOf(file_type.toLowerCase() ) == -1)
				   {
					   System.out.println(visit_from);
					   out.println("<script>alert('您上传的图片格式不正确');window.location.href='"+visit_from+"';</script>");
					   out.flush();
					   out.close();
					   return;
				   }
				   
				   //保存图片
				 //  String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());
				   String imageInDate = (String) paraMap.get("imageInDate");
				   String res_id = (String) paraMap.get("res_id");
				   int i=0;
				   Iterator savefileItr = fileList.iterator();
				   while (savefileItr.hasNext()) {
					   FileItem sfileItem = null;
					 
					   sfileItem = (FileItem) savefileItr.next();
					   
					   if (sfileItem == null || sfileItem.isFormField()) continue;
					   
					   path = sfileItem.getName();
					   size = sfileItem.getSize();
					   if ("".equals(path) || size == 0) continue;
					   
					  
					   String file_name1 = path.substring(path.lastIndexOf("\\") + 1);
					   String file_type1 = file_name1.substring(file_name1.lastIndexOf(".") + 1);
						
					   String savePath=ctx.getRealPath("/data/upload/images1/"+imageInDate);
						   File uploadFile = new File(savePath);  
						   if(!uploadFile.exists()) {uploadFile.mkdirs();}else{ i=uploadFile.list().length;}
						   String imgfile = savePath+ "/"+res_id+"_2_"+i+"."+file_type1;	
						   try {
							sfileItem.write(new File(imgfile));
						} catch (Exception e) {
							// TODO Auto-generated catch block
						
							e.printStackTrace();
						}
				          
				   		
					}
				   out.println("<script> var f=confirm(\"你确定继续上传吗\");if(f==true)window.location.href='"+visit_from+"';</script>");
				   
				  
				   
				   
				   
			   }
		

			   }
	


	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);

	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *             if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		this.config = config;
		 ServletContext ctx=config.getServletContext();
		 String savePath=ctx.getRealPath("/data/upload/images1");
		
		 System.out.println(savePath);

	}

}

  

 

目录
相关文章
|
小程序
UniApp上传图片
小程序大家应该都知道,通过上传组件得到的都是本地的一个临时路径,这个路径是不能被外网访问的,所以我们就需要将拿到的临时路径转成Base64上传到后台服务器。或者说是另外一个办法,就是通过组件直接上传文件,这个看需求设计吧。
282 0
|
10月前
uniapp上传图片
uniapp上传图片
98 0
|
5月前
|
PHP 数据安全/隐私保护
ueditor上传图片添加水印
博客在上传图片的时候,我希望能打上我博客链接的水印,掘金,csdn都是这么干的,这事我得学习。 平时的图片上传还好说,在文章编辑的时候,使用ueditor上传图片加水印需要修改ueditor部分PHP的源码,我这里大概记录一下。 首先打开php文件夹下的Uploader.class.php
31 0
|
9月前
uiapp 上传图片
uiapp 上传图片
81 0
|
存储 NoSQL 前端开发
一文搞定图片选择及图片上传
本篇介绍了在 Flutter 中如何选择图片文件,图片选择组件的封装和如何将图片上传到后台。通过本篇,可以了解Flutter 构建应用时的图片上传过程。
800 0
上传文件资料并生成缩略图
上传文件资料并生成缩略图
338 0
上传文件资料并生成缩略图
图片上传预览
     最近做需求时遇到的,上传的时候预览一下,一开始并没有想着用插件什么的,太复杂,只是个预览效果,不如自己写省事。前前后后也就几十行代码(包含头尾HTML、注释、输出调试),反正是比引用插件少多了,自己写也是个锻炼。
790 0
|
Web App开发 JavaScript 内存技术