微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsp怎么上传显示图片

jsp上传显示图片方法:首先创建上传JSP页面;然后创建上传图片后台处理业务“upload.jsp”;最后使用JS完成交互。

之前做过一个项目,有一个功能图片上传并且展示图片,尝试过其他的方法,但会有一个问题,那就是在IE8上图片并不能下常展示,

所以便用以下方法上传图片,很好的解决了此问题,步骤如下:

1.上传图片页面index.jsp

<%@ page language=java import=java.util.*,java.net.URLDecoder pageEncoding=utf-8%>
<%
String path = request.getcontextpath();
String basePath = request.getScheme()+://+request.getServerName()+:+request.getServerPort()+path+/;
%>
<!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>
	<script  type=text/javascript src=js/jquery-1.8.0.min.js></script>
	<script  type=text/javascript src=js/ajaxupload.js></script>
	<!--
	<link rel=stylesheet type=text/css href=styles.css>
	-->
</head>
<body>
<script type=text/javascript>
$(function(){
	//上传图片
	new AjaxUpload('#addLabProdPic', {
		action: 'upload.jsp',
		name: 'picFile',
		responseType: 'json',
		onSubmit : function(file , ext){
			if (ext && /^(jpg|png|bmp)$/.test(ext.toLowerCase())){
				this.setData({
					'picName': file
				});
			} else {
				alert(请上传格式为 jpg|png|bmp 的图片!);
				return false;				
			}
		},
		onComplete : function(file,response){
			if(response.error) {
				alert(response.error);
				return;
			}
			//alert(response.picUrl);
			show(response.picUrl);
		}		
	});
})
function show(path){
	
if(document.all)//IE
{
//path = D:/upload/11.png;
document.getElementById(imgPreview).innerHTML=;
document.getElementById(imgPreview).style.filter = progid:DXImageTransform.Microsoft.AlphaimageLoader(enabled='true',sizingMethod='scale',src=\ + path + \);//使用滤镜效果www.2cto.com  
}
else//FF
{
//path = D:/upload/11.png;
//document.getElementById(imgPreview).innerHTML = <img id='img1' width='120px' height='100px' src='+path+'/>;
document.getElementById(img1).src = path;
}
};
</script>
<h1>Ajax文件上传例子,选择图片后立即上传,无需点击上传按钮</h1>
	<button id=addLabProdPic>选择图片</button>
	<br>
	<div id=imgPreview style='width:120px; height:100px;'>
	<img id=viewImg  width=200px height=200px;>
	</div>
</body>
</html>

2.上传图片后台处理业务upload.jsp

<%@ page language=java import=java.util.* pageEncoding=utf-8%>
<%@page import=java.io.PrintWriter,java.io.File,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.disk.diskFileItemFactory,org.apache.commons.fileupload.servlet.ServletFileUpload %>
<%
System.out.println(///////);
// dfif对象为解析器提供解析时的缺省的一些配置
	diskFileItemFactory dfif = new diskFileItemFactory();
// 创建解析器
	ServletFileUpload sfu = new ServletFileUpload(dfif);
sfu.setHeaderEncoding(utf-8);//解决上传图片如果为中文就是乱码问题
String loadpath=D:/upload;//上传文件存放目录(此路径是将上传文件放在本地的硬盘上)
String filName=;
try{
	// 开始解析(分析InputStream)
	// 每一个表单域当中的数据都会
	// 封装到一个对应的FileItem对象上。
	List<FileItem> items = sfu.parseRequest(request);
	for (int i = 0; i < items.size(); i++) {
		FileItem item = items.get(i);
		// 要区分是上传文件域还是普通的表单域
		if (item.isFormField()) {
					// 普通表单域
					String name = item.getString();
					filName=name;
					System.out.println(name: + name);
				} else {
					// 上传文件域
					// ServletContext:servlet上下文对象。
					ServletContext sctx = getServletContext();
					// 获得原始的文件名
					String filename = item.getName();
			File loadFolder = new File(loadpath);
			if (!loadFolder.exists()) {
				loadFolder.mkdirs();
			}
					File file = new File(loadFolder + \\ + filename);
					item.write(file);
				}
	}
	String result=loadpath+/+filName;
	PrintWriter writer = response.getWriter();
	
	writer.print({);
	//writer.print(msg:\文件大小:+item.getSize()+,文件名:+filename+\);
	writer.print(picUrl:\ + result + \);
	writer.print(});
	
	writer.close();
}catch(Exception e){
	e.printstacktrace();
}
%>

3.所需主要文件ajaxupload.js

这部分缺失,导致交互出现问题,所以需要大家摸索了,加油。

原文地址:https://www.jb51.cc/java/1192065.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐