как мы можем загрузить файл в angularJS

есть ли прямой подход к загрузке файлов в angularJS. Я совершенно новичок в angularJS. Пытался погуглить об этом, но не смог найти ни одного базового примера по этому поводу. Нам нужно установить какие-либо библиотеки/файлы .js

 <!DOCTYPE html>
    <html ng-app xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    </head>
<body>
<h5>Upload</h5>
    <!--<div class="span12">-->            
    <div class="span4">
        <div class="fileupload fileupload-new" data-provides="fileupload">
            <div class="input-append">
                <div class="uneditable-input span3">
                    <i class="icon-file fileupload-exists"></i> 
                    <span class="fileupload-preview" ng-model="userType"></span>                                          
                </div>                                
                <span class="btn btn-file">
                    <span class="fileupload-new">Select file</span>
                    <span class="fileupload-exists">Change</span>
                    <!--<input type="file" name="file" />-->
                    <input type="file" ng-model="upFile" onchange="angular.element(this).scope().setFileEventListener(this)" />
                </span>
                <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
            </div>
        </div>                   
    </div>
    <div class="span2"  >
        <button type="submit"  value="Send" id="btnStartUpload" class="btn start" ng-click="uploadFile()" ng-disabled="!upload_button_state">
            <i class="icon-upload"></i>
            <span>Upload File</span>
        </button>                       
    </div>
    <script>
        $scope.setFileEventListener = function (element) {
            $scope.uploadedFile = element.files[0];

            if ($scope.uploadedFile) {
                $scope.$apply(function () {
                    $scope.upload_button_state = true;
                });
            }
        }

        $scope.uploadFile = function () {
            uploadFile();
        };


        function uploadFile() {
            if (!$scope.uploadedFile) {
                return;
            }

            ajax_post.uploadFile_init($scope.uploadedFile)
                .then(function (result) {
                    if (result.status == 200) {
                        $scope.storeDB_button_state = true;
                        clientInfo.imagePath = "/uploadsfolder/" + $scope.uploadedFile.name;

                    }
                }, function (error) {
                    alert(error.message);
                });
        }
    </script>
</body>
</html>

person Santosh    schedule 19.11.2013    source источник


Ответы (1)


Вот фрагменты кода, которые загружают любой файл (также изображения) на сервер с помощью

загрузка файла начальной загрузки (Bootstrap v2.3.1-j6)

введите здесь описание изображения

HTML

<h5>Upload</h5>
    <!--<div class="span12">-->            
    <div class="span4">
        <div class="fileupload fileupload-new" data-provides="fileupload">
            <div class="input-append">
                <div class="uneditable-input span3">
                    <i class="icon-file fileupload-exists"></i> 
                    <span class="fileupload-preview" ng-model="userType"></span>                                          
                </div>                                
                <span class="btn btn-file">
                    <span class="fileupload-new">Select file</span>
                    <span class="fileupload-exists">Change</span>
                    <!--<input type="file" name="file" />-->
                    <input type="file" ng-model="upFile" onchange="angular.element(this).scope().setFileEventListener(this)" />
                </span>
                <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a>
            </div>
        </div>                   
    </div>
    <div class="span2"  >
        <button type="submit"  value="Send" id="btnStartUpload" class="btn start" ng-click="uploadFile()" ng-disabled="!upload_button_state">
            <i class="icon-upload"></i>
            <span>Upload File</span>
        </button>                       
    </div>

JS

$scope.setFileEventListener = function(element) {
        $scope.uploadedFile = element.files[0];

        if ($scope.uploadedFile) {
            $scope.$apply(function() {
                $scope.upload_button_state = true;
            });   
        }
    }

$scope.uploadFile = function() {
    uploadFile();
};


function uploadFile() {
    if (!$scope.uploadedFile) {
        return;
    }

    ajax_post.uploadFile_init($scope.uploadedFile)
        .then(function(result) {
            if (result.status == 200) {
                $scope.storeDB_button_state = true;
                clientInfo.imagePath = "/uploadsfolder/" +     $scope.uploadedFile.name;

            }
        }, function(error) {
            alert(error.message);
        });
}

Здесь мы используем сервис ajax_post и вызываем метод: uploadFile_init:

фабрика

app.factory('ajax_post', ['$http', function(_http) {

        return {           
            uploadFile_init: function(uploadedFile) {
                var fd = new FormData();
                fd.append("uploadedFile", uploadedFile);
                var upload_promise = _http.post('somePath',
                    fd, {
                        headers: {
                            'Content-Type': undefined
                        },
                        transformRequest: angular.identity
                    });

                return upload_promise;
            }
        }
    }
]);

Надеюсь, это поможет

person Maxim Shoustin    schedule 19.11.2013
comment
Большое спасибо за помощь ... я почти закончил ... но не могу понять, что такое фабрика приложений (я новичок в этом). Я только что создал одну HTML-страницу в Visualstudio 2012 и добавил ваш код HTML и js в это страница. Возможно, я делаю неправильно. Пожалуйста, помогите мне в процессе. Ничего не происходит, когда я нажимаю кнопку загрузки файла. Мне нужно добавить любые ссылки jquery/js. Я прикреплю свой html-файл/файл проекта - person Santosh; 19.11.2013
comment
Добро пожаловать в мир Angularjs! Я не могу описать, как работает angualr, это выходит за рамки вопроса, но вы можете посмотреть на этой демонстрации, как работает factory: jsfiddle.net/pkozlowski_opensource/PxdSP/14 - person Maxim Shoustin; 19.11.2013
comment
добавил мой код в вопрос. Пожалуйста, проверьте его. Добавлен тег ng-app в html в начале. Прочитайте некоторые места, где это требуется для angular js. - person Santosh; 19.11.2013