jspsmartupload上传下载,解决乱码

如题,这个上传下载功能用的是jspsmartupload组件,要到网上下载jar包

先上一个简单的案例程序:

上传:

前台:

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>jspSmartUpload组件文件上传</title>
</head>
<body>
	<br>
	<br>
	<center>
		<font size="5" color="#ff0000"><b>jspSmartUpload组件文件上传</b> </font><br>
		<form name="uploadForm" enctype="multipart/form-data" method="post"
			action="servlet/SmartUploadServlet">
			<table border="0" align="center" cellpadding="2" cellspacing="2"
				bgcolor="snow">
				<input type="hidden" name="paramete" value="OK!">
				<tr>
					<td>
						<div align="center">上传文件1:</div>
					</td>
					<td><div align="center">
							<input type="file" name="file1" size="25" maxlength="80">
						</div></td>
				</tr>
				<tr>
					<td>
						<div align="center">上传文件2:</div>
					</td>
					<td><div align="center">
							<input type="file" name="file2" size="25" maxlength="80">
						</div></td>
				</tr>
				<tr width="100%">
					<td>
						<div align="center">
							<input type="submit" value="上传文件"> <input type="reset"
								value="清除">
						</div>
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>

后台:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.SmartUpload;
public class SmartUploadServlet extends HttpServlet {
 private ServletConfig config;
 //初始化Servlet
 final public void init(ServletConfig config)
   throws ServletException{
  this.config=config;
 }
 //处理GET请求
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  this.doPost(request, response);
 }
 //响应POST请求
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  //获取PrintWriter对象
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("<BODY bgcolor='white'><center><br>");
  out.println("<br><h1>jspSmartUpload</h1>");
  out.println("<hr><br>");
  //新建一个SmartUpload对象
  SmartUpload mySmartUpload=new SmartUpload();
  try{
   //上传初始化
   mySmartUpload.initialize(config, request, response);
   //设定每个上传文件的最大长度
   mySmartUpload.setMaxFileSize(1*512*1024);
   //设定总上传数据的长度
   mySmartUpload.setTotalMaxFileSize(1*1024*1024);
   //设定允许上传的文件的类型,只允许上传java,doc,txt文件
   mySmartUpload.setAllowedFilesList("java,doc,txt");
   //设定禁止上传的文件的类型,禁止上传带有exe,bat文件
   mySmartUpload.setDeniedFilesList("exe,bat");
   //上传文件
   mySmartUpload.upload();
   //将上传文件全部保存到指定目录
   String name = new String(mySmartUpload.getRequest().getParameter("paramete"));
   System.out.println(name);
   int count=mySmartUpload.save("/");
   out.println(//利用Request对象获取参数之值
     //String name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") ; 
     mySmartUpload.getRequest().getParameter("paramete")+" ");
   out.println(name);
   //显示处理结果
   out.println("<font color=red>"+count+"</font> File Upload!<br>");
   //处理每个上传文件
   for(int i=0;i<mySmartUpload.getFiles().getCount();i++)
   {
    com.jspsmart.upload.File file
    =mySmartUpload.getFiles().getFile(i);
    //判断用户是否选择了文件
    if(!file.isMissing()){
     //打印文件名
     out.println("File Name: <font color=red>"
       +file.getFileName()+"</font><br>");
     //打印文件扩展名
     out.println("File ExtName: <font color=red>"
       +file.getFileExt()+"</font><br>");
     //打印文件路径,包括目录
     out.println("Path: <font color=red>"
       +file.getFilePathName()+"</font><br>");
     //另存到以Web应用程序的根目录为文件根目录的目录下
     //(声明一下:在Myeclipse中,该目录位于工程下的.metadata/.me_tcat/webapps/该工程目录/upload/)
     file.saveAs("/upload/"+file.getFileName(),mySmartUpload.SAVE_VIRTUAL);
     
    }
   }
  }catch(Exception e){//异常处理
   //打印自定义异常信息
   out.println("Unanable to upload the file.<br>");
   out.println("Please Check The File Type");
  }
  
 }
}


下载:

前台:

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>jspSmartUpload组件下载文件</title>
</head>
<body>
	<br>
	<br>
	<center>
		<font size="5" color="#ff0000"><b>jspSmartUpload组件下载文件</b>
		</font><br>
		<form name="uploadForm" enctype="multipart/form-data" method="post"
			action="servlet/SmartDownloadServlet">
			<table border="0" align="center" cellpadding="2" cellspacing="2"
				bgcolor="snow">
				<tr>
					<td>
						<div align="center">
							<a href="servlet/SmartDownloadServlet?fileName=新建文本文档.txt">文件1</a>
						</div></td>
					<td>
						<div align="center">
							<a href="servlet/SmartDownloadServlet?fileName=2.jpg">文件2</a>
						</div></td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>


后台:

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.SmartUpload;
public class SmartDownloadServlet extends HttpServlet {
	private ServletConfig config;
	//初始化Servlet
	final public void init(ServletConfig config)
			throws ServletException{
		this.config=config;
	}
	//处理GET请求
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
	//响应POST请求
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//新建一个SmartUpload对象
		SmartUpload mySmartUpload=new SmartUpload();
		try{
			//上传初始化
			mySmartUpload.initialize(config, request, response);
			//String name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") ; 
			String fileName=new String(request.getParameter("fileName").getBytes("ISO-8859-1"),"utf-8");
			//System.out.println(fileName);
			//设定contentDisposition为null以禁止浏览器
			//自动打开文件
			//保证单击链接后是下载文件,若不设定,则
			mySmartUpload.setContentDisposition(null);
			//下载文件 可加路径"/upload/"
			
			mySmartUpload.downloadFile("/upload/"+fileName);
		}catch(Exception e){//异常处理
		}
	}
}


要注意一点,如果用了这个组件,那么上传的form表单中,要加一个属性:enctype="multipart/form-data"  ;而且因为此,如果要同时传其他参数,后台接收的时候不能用以前的request.getParamter(); 而是要用这个组件里面的方法:比如你同时在input中写了文件名docName,要传这个值,后台要在mySmartUpload.upload();这句后写String docName = mySmartUpload.getRequest().getParameter("doNname"); ,注意一定要在那句话之后。

现在问题来了,这个组件确实用起来非常简单,在一些小的项目中很实用,但他也有非常让人头疼的问题——中文乱码。这个问题也没有什么好的解决办法,因为jspsmartupload这个组件本来就不支持中文,唯一的一个解决办法就是改他的源码。你可以尝试上网找办法自己改一下,很麻烦的。现笔者已将此问题解决。完美支持jspsmartupload中文上传下载及传参的jar包如下:

http://download.csdn.net/detail/u011250851/7200253  希望能给你帮助。

你可能感兴趣的:(jspsmartupload上传下载,解决乱码)