Я использовал новый установщик Eclipse. Мне не понравился путь установки, и я изменил его вручную. После этого я получил сообщение exit = 13.
В файле eclipse.ini
есть новое свойство с именем -install
. Мне нужно было изменить его с новым местоположением и решить эту проблему.
В новом установщике я выбрал D: / eclipse
, но IDE была установлена в D: / затмение / затмение
. Итак, я переместил папку вручную. В следующий раз, когда я попытался открыть eclipse, я получил ошибку выхода. Таким образом, мне пришлось изменить
eclipse.ini
и установить текущее местоположение:
-install D: / eclipse
Обновление 27 апреля 2015 г.
. Вверх и переход на сцену HTML5 - это атрибут загрузки . Это поддерживается в Firefox и Chrome, и скоро появится IE11. В зависимости от ваших потребностей вы можете использовать его вместо запроса AJAX (или используя window.location
), пока файл, который вы хотите загрузить, находится в том же месте, что и ваш сайт.
Вы всегда можете сделать запрос AJAX / window.location
откат с помощью некоторого JavaScript , чтобы проверить, поддерживается ли download
, а если нет, переключая его на вызов window.location
.
Оригинальный ответ
У вас не может быть запрос AJAX открыть приглашение для загрузки, так как вы физически должны перейти к файлу, чтобы запросить загрузку. Вместо этого вы можете использовать функцию успеха, чтобы перейти к download.php. Это откроет приглашение для загрузки, но не изменит текущую страницу.
$.ajax({
url: 'download.php',
type: 'POST',
success: function() {
window.location = 'download.php';
}
});
Несмотря на то, что это отвечает на вопрос, лучше просто использовать window.location
и полностью исключить запрос AJAX.
Декодирование имени файла из заголовка немного сложнее ...
var filename = "default.pdf";
var disposition = req.getResponseHeader('Content-Disposition');
if (disposition && disposition.indexOf('attachment') !== -1)
{
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
var matches = filenameRegex.exec(disposition);
if (matches != null && matches[1])
filename = matches[1].replace(/['"]/g, '');
}
Для этого вам вообще не нужен ajax. Если вы просто установите «download.php» как href на кнопке или, если это не ссылка, используйте:
window.location = 'download.php';
Браузер должен распознать двоичную загрузку и не загружать фактическую страницу, а просто служит для загрузки файла.
window.location
, это i> JavaScript.
– mikemaccana
22 April 2014 в 19:50
Чтобы браузер загрузил файл, вам необходимо сделать такой запрос:
function downloadFile(urlToSend) {
var req = new XMLHttpRequest();
req.open("GET", urlToSend, true);
req.responseType = "blob";
req.onload = function (event) {
var blob = req.response;
var fileName = req.getResponseHeader("fileName") //if you have the fileName header available
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download=fileName;
link.click();
};
req.send();
}
Решение для кросс-браузера, протестированное в Chrome, Firefox, Edge, IE11.
В DOM добавьте тег скрытой ссылки:
<a id="target" style="display: none"></a>
Затем:
var req = new XMLHttpRequest();
req.open("GET", downloadUrl, true);
req.responseType = "blob";
req.onload = function (event) {
var blob = req.response;
var fileName = null;
var contentType = req.getResponseHeader("content-type");
// IE/EDGE seems not returning some response header
if (req.getResponseHeader("content-disposition")) {
var contentDisposition = req.getResponseHeader("content-disposition");
fileName = contentDisposition.substring(contentDisposition.indexOf("=")+1);
} else {
fileName = "unnamed." + contentType.substring(contentType.indexOf("/")+1);
}
if (window.navigator.msSaveOrOpenBlob) {
// Internet Explorer
window.navigator.msSaveOrOpenBlob(new Blob([blob], {type: contentType}), fileName);
} else {
var el = document.getElementById("target");
el.href = window.URL.createObjectURL(blob);
el.download = fileName;
el.click();
}
};
req.send();
Возможно. Вы можете запустить загрузку изнутри функции ajax, например, сразу после создания файла .csv.
У меня есть функция ajax, которая экспортирует базу данных контактов в CSV-файл и просто после его завершения он автоматически запускает загрузку файла .csv. Итак, после получения ответаText и все в порядке, я перенаправляю браузер следующим образом:
window.location="download.php?filename=export.csv";
Мой файл download.php выглядит так:
<?php
$file = $_GET['filename'];
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=".$file."");
header("Content-Transfer-Encoding: binary");
header("Content-Type: binary/octet-stream");
readfile($file);
?>
Нет обновите страницу, и файл автоматически начнет загрузку.
ПРИМЕЧАНИЕ. - Протестировано в следующих браузерах:
Chrome v37.0.2062.120
Firefox v32.0.1
Opera v12.17
Internet Explorer v11