没有出现保存文件对话框
Save file dialog not appearing
我想在我的网站上下载一首歌曲。我正在使用以前使用过的下载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]
});
不能通过ajax下载文件。由于安全原因,JavaScript无法生成另存为对话框,也无法将它们存储在磁盘中。它将使用响应,但不能对它做任何有意义的事情。
您需要使用window.location
代替:
window.location = "/downloadSong?song=" + item.title[0];
由于Content-Disposition: attachment
头,它不会影响当前打开的页面
相关文章:
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- 如何为使用 JSP 生成的下载文件显示“保存文件”对话框
- 如何在jquery/JavaScript中打开浏览文件对话框时执行取消事件
- 单击页面中的任何按钮时,使用Jquery file Upload时都会打开文件对话框
- 如何在Safari中显示保存文件对话框
- 如何在javascript中将事件添加到浏览器的“保存文件”对话框中
- 单击输入框以显示“打开文件”对话框,但不单击“选择文件”按钮
- IPython 笔记本打开文件对话框(检索完整路径)
- 将文件从客户端上传到服务器,而无需打开“文件”对话框
- 通过 ESC 关闭文件对话框,该模式也通过 ESC 关闭
- 如何在没有文件对话框的情况下通过javascript/ajax从url发布图像
- 如何检测是否从文件对话框中选择了文件
- 在“下载文件”对话框中添加一个选项
- 在没有file输入的情况下打开文件对话框
- "在文件对话框中取消“;事件
- “打开文件”对话框未打开
- 按钮显示“选择要上载的文件”对话框
- 没有出现保存文件对话框
- NodeJS不触发浏览器中的保存文件对话框/ EmberJS不接收从服务器发送的文件
- 从服务器下载文件:打开文件对话框选择保存文件的文件夹