利用SmartUpload+servlet上传图片文字,上传显示图片,解决乱码问题

1.首先需要一个SmartUploa的jar包+一个json的包(源码包里 面有)

2.jsp页面代码

<%@ page language="java" import="java.util.*" 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">

</head>
<script>
	function setImagePreview(pic) {

		var docObj = document.getElementById(pic);
		switch (pic) {
		case 1:
			var imgObjPreview = document.getElementById(preview);
			break;
		case 2:
			var imgObjPreview = document.getElementById(preview1);
			break;
		default:
			var imgObjPreview = document.getElementById(preview2);
		}
		if (docObj.files && docObj.files[0]) {
			//火狐下,直接设img属性 
			imgObjPreview.style.display = 'block';
			imgObjPreview.style.width = '300px';
			imgObjPreview.style.height = '120px';
			//imgObjPreview.src = docObj.files[0].getAsDataURL(); 
			imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
		} else {
			//IE下,使用滤镜 
			docObj.select();
			var imgSrc = document.selection.createRange().text;
			var localImagId = document.getElementById("localImag");
			//必须设置初始大小 
			localImagId.style.width = "250px";
			localImagId.style.height = "200px";
			//图片异常的捕捉,防止用户修改后缀来伪造图片 
			try {
				localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
				localImagId.filters
						.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
			} catch (e) {
				alert("您上传的图片格式不正确,请重新选择!");
				return false;
			}
			imgObjPreview.style.display = 'none';
			document.selection.empty();
		}
		return true;
	}
</script>
<body>
	<div>
		<hr  style="height:3px;border:none;border-top:3px double red;" />
	</div>
<body>

	<form action="IM" method="post" enctype="multipart/form-data">

		图片1:<input type="file" name="myfile1" id="1"
			onchange="javascript:setImagePreview(1);">标签:<input
			type="text" name="label0" id="label0"><br>
		<hr  style="height:3px;border:none;border-top:3px double red;" />
		图片2:<input type="file" name="myfile2" id="2"
			onchange="javascript:setImagePreview(2);">标签:<input
			type="text" name="label1"><br>
		<hr  style="height:3px;border:none;border-top:3px double red;" />
		图片3:<input type="file" name="myfile3" id="3"
			onchange="javascript:setImagePreview(3);">标签:<input
			type="text" name="label2"><br>
		<hr  style="height:3px;border:none;border-top:3px double red;" />
		图片4:<input type="file" name="myfile4" id=4>标签:<input
			type="text" name="label3" id="4"><br>
		<hr  style="height:3px;border:none;border-top:3px double red;" />
		<input type="submit" value="上传">
	</form>

	<div id="localImag">
		<img id="preview" width=-1 height=-1 style="diplay:none" />
		<div>
</body>

</html>

3.servlet页面

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.JsonObject;
import com.jspsmart.upload.SmartUpload;

@WebServlet("/IM")
public class IM extends HttpServlet {

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 获取标签的内容
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");

		String filePath = getServletContext().getRealPath("/" + "imgs");
		// 如果不存在就创建
		File file = new File(filePath);
		if (!file.exists()) {
			file.mkdir();
			// System.out.println(">>>>>>>>>>>>>>>>>>>>>>>成功创建" + filePath);
		}
		// 利用SmartUpload上传
		SmartUpload su = new SmartUpload();
		su.initialize(getServletConfig(), request, response);
		// 设置大小
		su.setMaxFileSize(1024 * 1024 * 10);
		String result = "上传成功";
		try {
			// 设置上传图片的格式
			su.setDeniedFilesList("exe");
			su.upload();
			int count = su.save(filePath);
			System.out.println("上传成功了" + count);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			result = "上传失败";
			e.printStackTrace();
		}

		for (int i = 0; i < su.getFiles().getCount(); i++) {
			com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
			System.out.println("-----------------------");
			// 获取标签的内容
			// String name = new String(su.getRequest().getParameter("label"+
			// i).trim().getBytes(),"utf-8");

			String label = su.getRequest().getParameter("label" + i);
			System.out.println(label + "??????????");
			System.out.println("表单的name值" + tempFile.getFileName());
			System.out.println("表单的上传的文件名" + tempFile.getFileName());
			System.out.println("表单的上传的文件大小" + tempFile.getSize());
			System.out.println("上传文件的扩展名" + tempFile.getFileExt());
			System.out.println("上传文件的全名" + filePath + "/"
					+ tempFile.getFilePathName());
			String url = filePath + "/" + tempFile.getFilePathName();
			System.out.println("-----------------------");
			// 生成json文件  判断是否为空
			if ("".equals(label)||"".equals(tempFile.getFileName().equals(""))) {
			}else {
				JsonObject object = new JsonObject();
				object.addProperty(label,
						url);
				System.out.println(object.toString());
			}
		}

		// 设置前台
		request.setAttribute("result", result);
		request.getRequestDispatcher("index.jsp").forward(request, response);
		// 生成json文件
		JsonObject object = new JsonObject();

	}

}

源码下载:http://pan.baidu.com/s/1jIpkMJc

乱码问题解决

String url = new String((filePath + "/" + tempFile.getFilePathName()).getBytes(),"utf-8");

另加javascript图片直接显示

<script>
	function setImagePreview(pic) {

		var docObj = document.getElementById(pic);
		switch (pic) {
		case 1:
			var imgObjPreview = document.getElementById(preview);
			break;
		case 2:
			var imgObjPreview = document.getElementById(preview1);
			break;
		default:
			var imgObjPreview = document.getElementById(preview2);
		}
		if (docObj.files && docObj.files[0]) {
			//火狐下,直接设img属性 
			imgObjPreview.style.display = 'block';
			imgObjPreview.style.width = '300px';
			imgObjPreview.style.height = '120px';
			//imgObjPreview.src = docObj.files[0].getAsDataURL(); 
			imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
		} else {
			//IE下,使用滤镜 
			docObj.select();
			var imgSrc = document.selection.createRange().text;
			var localImagId = document.getElementById("localImag");
			//必须设置初始大小 
			localImagId.style.width = "250px";
			localImagId.style.height = "200px";
			//图片异常的捕捉,防止用户修改后缀来伪造图片 
			try {
				localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
				localImagId.filters
						.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
			} catch (e) {
				alert("您上传的图片格式不正确,请重新选择!");
				return false;
			}
			imgObjPreview.style.display = 'none';
			document.selection.empty();
		}
		return true;
	}
</script>


转载于:https://my.oschina.net/TAOH/blog/656785

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值