【发布时间】:2011-10-23 19:24:39
【问题描述】:
我正在尝试在我的网站上制作一首可供下载的歌曲。我正在使用我以前使用过的下载 servlet 来使 zip 文件可供下载。我已经运行了代码,一切似乎都在工作,输出流读取整个文件,但没有出现保存对话框。有任何想法吗?谢谢你的帮助。代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String song = request.getParameter("song");
StringBuilder filePath = new StringBuilder();
try {
Thread.sleep(1);
String[] info = getSongInfo(song);
filePath.append("D:\\My Music\\My Song.m4a");
File file = new File(filePath.toString());
if (!file.exists()) {
throw new FileNotFoundException(file.getAbsolutePath());
}
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Type", "audio/mp4a-latm");
response.setHeader("Content-disposition", "attachment; filename="+song+".m4a");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
byte[] buf = new byte[4096];
while (true) {
int length = bis.read(buf);
if (length == -1) {
break;
}
bos.write(buf, 0, length);
}
bos.flush();
bos.close();
bis.close();
} catch (InterruptedException e) {
System.err.println("Error message: " + e.getMessage());
}
}
调用使用:
dojo.xhrGet(
{
url: "/downloadSong?song="+item.title[0]
});
【问题讨论】:
-
在新窗口中打开指向该文件的链接
标签: java javascript servlets download