我的jsp页面中有这么一段代码:
<a href="/EnglishWalkman/res/情歌-梁静茹.avi">情歌-梁静茹.avi</a>
我想点击超链接就直接下载文件,但是报错如下:
type Status report
message /EnglishWalkman/res/%E6%83%85%E6%AD%8C-%E6%A2%81%E9%9D%99%E8%8C%B9.avi
description The requested resource (/EnglishWalkman/res/%E6%83%85%E6%AD%8C-%E6%A2%81%E9%9D%99%E8%8C%B9.avi) is not available.
肯定是编码出了问题,但我不知道怎么解决。。。求详细解答,在下感激不尽!
------解决方案--------------------
下载文件名字 假如是 fileNmae
try {
String newFielName = new String(fileName.getBytes("utf-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
------解决方案--------------------
貌似这不是乱码问题啊,乱码不会报错的,href后面应该加的是url,要下载的文件可以跟在url后面作为参数,然后在服务器端设置一个http头字段才行
------解决方案--------------------
楼主试试这个<a href=/EnglishWalkman/res/情歌-梁静茹.avi>情歌-梁静茹.avi</a>
------解决方案--------------------
/**
* 下载文件
* @param filePath 文件路径(物理路径),比如:E:\lft\flow\2002121201021245.doc
* @param fileName 源文件名称,中文也可以,比如:说明文档.doc
*/
public void downLoadFile(String filePath, String fileName) {
File file = new File(filePath);
if (!file.exists()
------解决方案--------------------
file.isDirectory()) {
return;
}
InputStream input =null;
OutputStream output = null;
try {
input = new FileInputStream(file);
output = getResponse().getOutputStream();
getResponse().setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
byte[] buffer = new byte[1024];
int i = 0;
while ((i = input.read(buffer)) != -1) {
output.write(buffer, 0, i);
}
} catch (Exception e) {} finally {
try {
if(null !=output) {
output.flush();
output.close();
}
if(null !=input) {
input.close();
}
} catch (Exception e) {}
}
}