#javascript #angularjs #file #downloadfile
#javascript #angularjs #файл
Вопрос:
У меня есть тег привязки в моем компоненте AngularJS, который ссылается на файл, но я хочу иметь возможность определять, существует ли файл в этом месте, чтобы выдать предупреждающее сообщение. Как это можно сделать?
<a ng-href="{{row.General_FileJson.DiskPath}}" download="{{row.General_FileJson.Name}}">file download</a>
Комментарии:
1. Предполагая, что вы не заблокированы CORS, вы можете отправить запрос AJAX HEAD и проверить ответ.
2. Когда я пытаюсь загрузить недопустимый исходный файл, он пытается загрузить файл и сообщает, что загрузка завершилась неудачно.
Ответ №1:
Вы можете использовать JavaScript (или, скорее, TypeScript) для выполнения асинхронного вызова URL-адреса и проверки кода состояния:
var request = new XMLHttpRequest();
request.open('HEAD', 'http://www.mozilla.org', true);
request.onreadystatechange = function(){
if (request.readyState === 4){
if (request.status === 404) {
alert("This file does not exist!");
}
}
};
request.send();
Приведенный выше пример — это просто ванильный JavaScript, но, конечно, вы также можете использовать библиотеку или даже выделенный сервис Angular.
Комментарии:
1. да, это полезно. Спасибо
Ответ №2:
$scope.getFile = function (path, file) {
$http.get(path).success(function (result) {
console.log(result);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = path;
a.download = file;
a.click();
window.URL.revokeObjectURL(url);
}).error(function (result, status) {
$scope.HasError = true;
$scope.ErrorMsg = "Unable to download this file! ";
alertError($scope.ErrorMsg);
});
}
<a href="" ng-click="getFile(Url, FileName)">file download</a>