public void downVoice(HttpServletRequest request,HttpServletResponse response,String voiceUrl) throws Exception {
int i = voiceUrl.lastIndexOf("/");
String fileName =voiceUrl.substring(i + 1);
HttpURLConnection httpconn = null;
URL url = null;
url = new URL(voiceUrl);
httpconn = (HttpURLConnection) url.openConnection();
httpconn.connect();
InputStream in= httpconn.getInputStream();
renderDownload(request, response, fileName, in);
}
public void renderDownload(HttpServletRequest request, HttpServletResponse response, final String fileName,
InputStream in) throws IOException {
String int BUFFER_SIZE = 4096
String mimetype = "application/octet-stream";
String encodeName = fileName;
String ua = request.getHeader("User-Agent");
/**
if (-1 != ua.toLowerCase().indexOf(" msie ")) {
// 客戶端爲IE
try {
// encodeName = java.net.URLEncoder.encode(fileName, "UTF-8");
encodeName = new String(encodeName.getBytes("GBK"),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
log.error("UnsupportedEncoding", e);
}
mimetype = " application/x-msdownload ";
} else {
// 非IE
encodeName = MimeUtility.encodeText(fileName, "UTF8", "B");
mimetype = " application/x-download ";
}
**/
try {
encodeName = new String(encodeName.getBytes("GBK"),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
//log.error("UnsupportedEncoding", e);
}
mimetype = " application/octet-stream ";
response.reset();
response.setContentType(mimetype);
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"");
OutputStream out = null;
try {
out = response.getOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
int i = -1;
while ((i = in.read(buffer)) != -1) {
out.write(buffer, 0, i);
}
response.flushBuffer();
} finally {
IOUtils.closeQuietly(out);
IOUtils.closeQuietly(in);
}
}
jsp:
window.open(url);