其中CodeToString()方法是一个中文字符处理的方法。如果文件不进行编码转换,则上传后的文件名将会是乱码,接收的文件数据也会是乱码:
下面是CodeToString()源代码:
复制代码 代码如下:
//处理中文字符串的函数
public String codeString(String str){
String s = str;
try {
byte[] temp = s.getBytes("utf-8");
s = new String(temp);
return s ;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return s;
}
}
二:文件下载
实现文件下载的最简单的方法就是使用超链接。假设在服务器上web目录下地upload子目录存在user.doc这个文档。如:
<a href="https://localhost:8080/upload/user.doc">下载user.doc</a>
当单击这个超级链接时,将会在浏览器中直接打开这个文档,就像是把word软件嵌入在浏览器中一样。
打开文档后就可以实现另存为了。当然在web上,最常见的方式是单击链接后,出现“另存为”对话框:
复制代码 代码如下:
//获取要下载的文件名
String filename = request.getParameter("name");
//得到想客服端输出的输出流
OutputStream outputStream = response.getOutputStream();
//输出文件用的字节数组,每次向输出流发送600个字节
byte b[] = new byte[600];
//要下载的文件
File fileload = new File("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad",filename);
//客服端使用保存文件的对话框
response.setHeader("Content-disposition", "attachment;filename="+filename);
//通知客服文件的MIME类型
response.setContentType("application/msword");
//通知客服文件的长度
long fileLength = fileload.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_length", length);
//读取文件,并发送给客服端下载
FileInputStream inputStream = new FileInputStream(fileload);
int n = 0;
while((n=inputStream.read(b))!=-1){
outputStream.write(b,0,n);
}