angularjs上傳圖片預覽__js

來源:互聯網
上載者:User


        <input type="file" ng-file-select="onFileSelect($files)"  accept="image/*">

app.factory("fileReader", function($q, $log) {

            var onLoad = function(reader, deferred, scope) {
                return function () {
                    scope.$apply(function () {
                        deferred.resolve(reader.result);
                    });
                };
            };


            var onError = function (reader, deferred, scope) {
                return function () {
                    scope.$apply(function () {
                        deferred.reject(reader.result);
                    });
                };
            };


            var onProgress = function(reader, scope) {
                return function (event) {
                    scope.$broadcast("fileProgress",
                            {
                                total: event.total,
                                loaded: event.loaded
                            });
                };
            };


            var getReader = function(deferred, scope) {
                var reader = new FileReader();
                reader.onload = onLoad(reader, deferred, scope);
                reader.onerror = onError(reader, deferred, scope);
                reader.onprogress = onProgress(reader, scope);
                return reader;
            };


            var readAsDataURL = function (file, scope) {
                var deferred = $q.defer();


                var reader = getReader(deferred, scope);
                reader.readAsDataURL(file);


                return deferred.promise;
            };


            return {
                readAsDataUrl: readAsDataURL
            };

    });




選擇圖片後執行的方法

 $scope.onFileSelect = function(files) {
           var fileIn=files[0];
            var img = new Image();
            var fileType = fileIn.name.substring(fileIn.name.lastIndexOf(".") + 1, fileIn.name.length);
            if(fileIn.size>5242880){//單位是B,此處不允許超過5M
                alert("圖片不能超過5M")
                return;
            }
            if(fileType=='JPG' || fileType=='PNG' || fileType=='JPEG ' || fileType=='jpg' || fileType=='png' || fileType=='jpeg'){


            }else{
                alert("圖片格式只支援:JPG,PNG,JPEG")
                return;
            }
            fileReader.readAsDataUrl(fileIn, $scope)
                    .then(function(result) {
                        $scope.imageSrc = result;
                        console.log(img.width);
            });
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.