Я делаю вызов ajax для сервлета Java для загрузки 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 код сервлета для заголовка:
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
@Maforast, Вы не можете; в этом-то и дело; это невозможно. – developerwjk