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

来源:互联网 发布:macbook强制卸载软件 编辑:程序博客网 时间:2024/05/18 02:22
最近不是一直在做老师的期末项目么,因为做的是一个视频在线点播的网站,所以在上传的部分一直使用smartupload上传文件,将数据写入数据库,可是这个工具有那么几个问题:

1.       已经不维护了

2.       对中文的支持很差

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

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

首先要引入3个jar包

下载地址:

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();//创建FileMoverFileMover 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>

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