http://community.csdn.net/Expert/topic/4623/4623584.xml?temp=.9276392上边的帖子分也算,呵呵. MailDB mdb = new MailDB();
Vector v = mdb.showone();
System.out.println("1===="+v.elementAt(0));
System.out.println("2===="+v.elementAt(1));
String filepath = servlet.getServletContext().getRealPath("/upload");
String filename = (String)v.elementAt(1);
// 设置响应头和下载保存的文件名
// response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=\"" + (String)v.elementAt(0) + "\"");
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/octet-stream");
File f=new File(filepath,filename);
java.io.FileInputStream fileIn =
new java.io.FileInputStream(f);
// 写出流信息
int i;
ServletOutputStream sos = response.getOutputStream();
int i_length = fileIn.available();
byte buf_1[]=new byte[i_length];
while(i_length>0){
fileIn.read(buf_1);
sos.write(buf_1);
i_length=fileIn.available();
}
sos.close();
fileIn.close(); 上边的代码是下载文件操作,暂时可以正常运行。v.elementAt(1)是目录下实际的文件名。现在,我想在下载的时候对它进行重命名为v.elementAt(0)。为什么一下载就出乱码。而换成v.elementAt(1)就可以正常啦。可是那没重命名。需求是必须要重新命名,具体该如何实现,请高人指点下。
Vector v = mdb.showone();
System.out.println("1===="+v.elementAt(0));
System.out.println("2===="+v.elementAt(1));
String filepath = servlet.getServletContext().getRealPath("/upload");
String filename = (String)v.elementAt(1);
// 设置响应头和下载保存的文件名
// response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=\"" + (String)v.elementAt(0) + "\"");
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/octet-stream");
File f=new File(filepath,filename);
java.io.FileInputStream fileIn =
new java.io.FileInputStream(f);
// 写出流信息
int i;
ServletOutputStream sos = response.getOutputStream();
int i_length = fileIn.available();
byte buf_1[]=new byte[i_length];
while(i_length>0){
fileIn.read(buf_1);
sos.write(buf_1);
i_length=fileIn.available();
}
sos.close();
fileIn.close(); 上边的代码是下载文件操作,暂时可以正常运行。v.elementAt(1)是目录下实际的文件名。现在,我想在下载的时候对它进行重命名为v.elementAt(0)。为什么一下载就出乱码。而换成v.elementAt(1)就可以正常啦。可是那没重命名。需求是必须要重新命名,具体该如何实现,请高人指点下。
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 = Character.toString(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();
}防止乱码出现,这样就应该好了.