我的代码是:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE); String pathsavefile;//要下载的文件
String fileName;//保存窗口中显示的文件名
pathsavefile=request.getParameter("filename");
fileName=request.getParameter("newname");
ServletOutputStream out = response.getOutputStream();
InputStream inStream=new FileInputStream(pathsavefile);
try
{
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
byte[] b = new byte[1024];
int len;
while((len=inStream.read(b)) >0)
out.write(b,0,len);
}
catch (Exception e)
{
System.out.println(e);
}
finally
{
out.close();
inStream.close();
};}
前几天的时候,点击连接,就给这个Servlet发送一个请求,然后页面端就会出现一个保存还是打开的窗口,如果下载一个xxx.doc的文件,就会出现这个文件名,但是现在突然出现一串无规律的字符串,而且文件类型也是未知,下载之后,就是那个无规律字符串的没有文件类型的文件,巨郁闷,我的发布平台是websphere,恳请大虾帮忙解决了,看看可能是什么地方出现了问题,这些先谢谢了!
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE); String pathsavefile;//要下载的文件
String fileName;//保存窗口中显示的文件名
pathsavefile=request.getParameter("filename");
fileName=request.getParameter("newname");
ServletOutputStream out = response.getOutputStream();
InputStream inStream=new FileInputStream(pathsavefile);
try
{
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
byte[] b = new byte[1024];
int len;
while((len=inStream.read(b)) >0)
out.write(b,0,len);
}
catch (Exception e)
{
System.out.println(e);
}
finally
{
out.close();
inStream.close();
};}
前几天的时候,点击连接,就给这个Servlet发送一个请求,然后页面端就会出现一个保存还是打开的窗口,如果下载一个xxx.doc的文件,就会出现这个文件名,但是现在突然出现一串无规律的字符串,而且文件类型也是未知,下载之后,就是那个无规律字符串的没有文件类型的文件,巨郁闷,我的发布平台是websphere,恳请大虾帮忙解决了,看看可能是什么地方出现了问题,这些先谢谢了!
可能要转码!
"Content-Disposition",
"attachment; filename=\"" + toUtf8String(filename) + "\"");
public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = String.valueOf(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}
response.addHeader("Content-Disposition",
"attachment;filename=\"" + "xxxx" + ".doc"");xxxx 可以改