Как узнать, что мой URL-адрес загрузки файла недействителен с помощью angularjs

#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>