文件上传及下载处理 及 文件名称乱码处理

今天上班先博一博,哈哈。。

①:struts1跟struts2文件上传基本的处理时差不多滴。就整个1的核心码囖。如下:

html 页面 form里面一定要设置类型为:

 enctype="multipart/form-data"

java类里面进行一个文件读写即可:

inputStream = new DataInputStream(formFile.getInputStream());//文件流读取
// 输出文件流
outputLocalStream = new DataOutputStream(new FileOutputStream(
		new File(filePath + "/" + fileName)));
byte buffer[] = new byte[bufSize];//设置每次读取的文件流大小  一般默认设置:1024 ;当然了,也可以写其他的。
while ((inputStream.read(buffer, 0, buffer.length) != -1)) {
	outputLocalStream.write(buffer, 0, buffer.length);
}

╭︿︿︿╮
{/ o  o /} 
 ( (oo) )  
  ︶ ︶︶:一、在struts1里面文件的封装对象是formfile,不能使用file,struts2里面才能使用file。

                二、文件读写操作完成记得关闭文件流。

②:struts1和2的文件download时候我们一般是将服务器或者数据库里面的文件取得然后给用户下载,河马如下:

一、最简单的就是直接用超链接,如:<a href=“http://www.XXX.com/project/downloadFiles/fileOne” >fileOne</a>

二、利用文件读写,然后把文件流抛出,利用浏览器自己的对流的封装下载文件。

// ServletContext init
				ServletContext context = request.getServletContext();
				// 文件 MimeType的取得
				response.setContentType(context.getMimeType(fileName));
				// 文件取得
				File file = new File(filePath + "/" + fileName);

				if (file.exists()) {
					// 文件名处理
					fileDownName = java.net.URLEncoder.encode(fileDownName,
							"UTF-8").replaceAll("\\+", "%20");
					String temp = "attachment;filename=\"" + fileDownName
							+ "\"";
					//设置header
					response.setHeader("Content-disposition", temp);
					// 输出文件流
					out = response.getOutputStream();
					// 下载源文件读取
					bis = new BufferedInputStream(new FileInputStream(file));
					bos = new BufferedOutputStream(out);
					byte[] buff = new byte[bufSize];
					int bytesRead;
					// writeFile
					while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
						bos.write(buff, 0, bytesRead);
					}
				}

╭︿︿︿╮
{/ o  o /} 
 ( (oo) )  
  ︶ ︶︶:一、超链接的办法存在很大的风险,所以一般我们不采用这类方法处理。

                二、文件读写操作完成记得关闭文件流。

 

 

 

 


 

你可能感兴趣的:(struts,String,File,buffer,download,byte)