angularjs文件上传

本文介绍了一个使用AngularJS实现文件上传功能的方法。通过自定义指令和控制器,实现了文件选择与上传的功能,并利用服务来处理文件上传到指定URL的过程。

参考: http://jsfiddle.net/JeJenny/ZG9re/

<div ng-controller = "myCtrl">

    <input type="file" file-model="myFile"/>

    <button ng-click="uploadFile()">upload me</button>

</div>


var myApp = angular.module('myApp', []);


myApp.directive('fileModel', ['$parse', function ($parse) {

    return {

        restrict: 'A',

        link: function(scope, element, attrs) {

            var model = $parse(attrs.fileModel);

            var modelSetter = model.assign;

            

            element.bind('change', function(){

                scope.$apply(function(){

                    modelSetter(scope, element[0].files[0]);

                });

            });

        }

    };

}]);


myApp.service('fileUpload', ['$http', function ($http) {

    this.uploadFileToUrl = function(file, uploadUrl){

        var fd = new FormData();

        fd.append('file', file);

        $http.post(uploadUrl, fd, {

            transformRequest: angular.identity,

            headers: {'Content-Type': undefined}

        })

        .success(function(){

        })

        .error(function(){

        });

    }

}]);


myApp.controller('myCtrl', ['$scope', 'fileUpload', function($scope, fileUpload){

    

    $scope.uploadFile = function(){

        var file = $scope.myFile;

        console.log('file is ' );

        console.dir(file);

        var uploadUrl = "/fileUpload";

        fileUpload.uploadFileToUrl(file, uploadUrl);

    };

    

}]);


转载于:https://my.oschina.net/u/1453451/blog/502885

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值