1
我对客户端的java servlet进行了ajax调用,以便下载xml文件。我使用此代码在“成功”ajax调用上追加表单,并强制触发以便有效启动文件下载。在Java中下载文件的文件夹浏览对话框
我的问题是,我想允许客户端用户选择保存文件的位置,而不是将其下载到默认浏览器文件夹中。
我可以这样做吗?
我的客户端代码:用于头
function downloadAnnotationXML()
{
downloadAnnotation=true;
var temp=new Object();
temp.topic=topic;
temp.operation=operation
temp.data=annotazioniXml;
var json = JSON.stringify(temp);
var url="<%=request.getContextPath()%>/DownloadAnnotationServlet";
$.ajax({
type: "POST",
url: url,
data: {json:json},
success: function(response, status, request) {
var disp = request.getResponseHeader('Content-Disposition');
if (disp && disp.search('attachment') != -1) {
var form = $('<form id="ajax" method="POST" action="' + url + '">');
form.append($('<input type="hidden" name="json" value="json">'));
$('body').append(form);
form.submit();
}
},
error:function(jqXHR, textStatus, thrownError)
{
error = "Non è stato possibile caricare l'oggetto";
msg = textStatus + thrownError;
promptError(error+" <br /> "+ msg);
}
});
}
我的Java servlet代码是:
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename="+file.getName());
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inStream.close();
outStream.close();
所有的工作很好,但文件上的默认浏览器文件夹中下载。 (
是的,我知道,但我无法处理浏览器客户端设置,所以我希望想知道一个解决方法来做到这一点。作为拦截响应在对话框jquery中选择保存文件的位置。 – Maforast 2015-03-03 09:01:16
@Maforast,你不能;这才是重点;不可能。 – developerwjk 2015-03-03 16:29:48