uploadbean+filemover解决上传文件获取表单中文乱码

最近不是一直在做老师的期末项目么,因为做的是一个视频在线点播的网站,所以在上传的部分一直使用smartupload上传文件,将数据写入数据库,可是这个工具有那么几个问题:

1.       已经不维护了

2.       对中文的支持很差

3.       上传文件的大小有限制,大于200M就会出问题

最早使用new String()的办法,可是对字数奇数偶数有限制,而且还是会出现乱码,又时百度,又是google的,没有好的办法,最后还是让我找到了一个非常完美的解决办法:使用uploadbean+filemover解决。

首先要引入3个jar包

uploadbean+filemover解决上传文件获取表单中文乱码_第1张图片

下载地址:

http://download.csdn.net/detail/xq328220454/3807748

下面是上传实例的代码

upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="javazoom.upload.UploadBean"%>
<%@page import="uploadutilities.FileMover"%>
<%@page import="com.up.IPTimeStamp"%>
<%@page import="javazoom.upload.MultipartFormDataRequest"%>
<%@page import="javazoom.upload.UploadFile"%>
<%@page import="com.vo.Movie"%>
<%@page import="com.dao.MovieDAO"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="com.dbulits.DBHandler"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
	</head>

	<body>
		<%
			//获取数据库连接
			DataSource ds = DBHandler.getDataSource();
		%>
		<%
			//创建上传对象
			UploadBean upBean = new UploadBean();
			//创建FileMover
			FileMover fileMover = new FileMover();
			//设置上传的目录
			upBean.setFolderstore(application.getRealPath("/")
					+ "OnlinePlay/voide/");
			upBean.setOverwrite(true);
			//添加上传监听
			upBean.addUploadListener(fileMover);
		%>
		<%
			//上传 and 重命名操作
			if (MultipartFormDataRequest.isMultipartFormData(request)) {
				//实例化重命名的类
				IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr());
				//重命名
				String name = its.getIPTimeRand() + ".flv";
				fileMover.setNewfilename(name);
				//获取request,同时设置最大文件上传,设置编码
				MultipartFormDataRequest mrquest = new MultipartFormDataRequest(
						request, null, 200 * 1024 * 1024,
						MultipartFormDataRequest.COSPARSER, "utf-8");
				//获取参数
				String intro = mrquest.getParameter("intro");
				String author = (String) session.getAttribute("username");
				String voideName = mrquest.getParameter("name");
				Date uptime = Calendar.getInstance().getTime();
				int count = 0;//播放次数初始值
				String type = mrquest.getParameter("type");
				String id = its.getIPTimeRand().toString();
				String path = "/OnlinePlay/voide/" + name;
				//获取文件列表
				Hashtable files = mrquest.getFiles();
				if ((files != null) || (!files.isEmpty())) {
					UploadFile file = (UploadFile) files.get("dyfile");
					upBean.store(mrquest, "dyfile");
					//写入数据库
					Movie m = new Movie(id, type, voideName, author, uptime,
							count, path, intro);
					//将视频信息写入到数据库文件
					MovieDAO md = new MovieDAO(ds);
					md.addMovie(m);
					session.setAttribute("uploadMovie", m);
					response.sendRedirect("../upok.jsp");
				}
			}
		%>
	</body>
</html>

顺利解决上传文件时,表单被封装为二进制,获取中文写入数据库出现乱码的问题了。

你可能感兴趣的:(uploadbean+filemover解决上传文件获取表单中文乱码)