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

首先声明,这是我在CSDN博客上原创的文章,搬到这里来了就直接~

最近不是一直在做老师的期末项目么,因为做的是一个视频在线点播的网站,所以在上传的部分一直使用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();

//创建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>

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

转载于:https://www.cnblogs.com/Codexue/archive/2012/04/22/2464830.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值