如何以角度2上传base64文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以角度2上传base64文件相关的知识,希望对你有一定的参考价值。

我正在尝试以base64格式上传文件,但它没有奏效。我不明白什么是错的,这是抛出的错误

这是功能

private headerMedia = new Headers({"Content-Type": "application/base64"});

    uploadMedia(base64, process, id): any {        
        let ruta: string = "http://route";
        let options = new RequestOptions({headers: this.headerMedia});       

            return this.http
            .post(ruta, base64, options)
            .toPromise()
            .then(() => base64)
            .catch(this.handleError);

    }
答案

我认为这种方法可以帮到你。

在Angular项目中创建目录

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

app.directive('ngFileModel', ['$parse', function ($parse) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            var model = $parse(attrs.ngFileModel);
            var isMultiple = attrs.multiple;
            var modelSetter = model.assign;
            element.bind("change", function (changeEvent) {
                var values = [];

                for (var i = 0; i < element[0].files.length; i++) {
                    var reader = new FileReader();

                    reader.onload = (function (i) {
                        return function(e) {
                            var value = {
                                lastModified: changeEvent.target.files[i].lastModified,
                                lastModifiedDate: changeEvent.target.files[i].lastModifiedDate,
                                name: changeEvent.target.files[i].name,
                                size: changeEvent.target.files[i].size,
                                type: changeEvent.target.files[i].type,
                                data: e.target.result
                            };
                            values.push(value);
                        }

                    })(i);

                    reader.readAsDataURL(changeEvent.target.files[i]);
                }


                scope.$apply(function () {
                    if (isMultiple) {
                        modelSetter(scope, values);
                    } else {
                        modelSetter(scope, values[0]);
                    }
                });
            });
        }
    }
}]);

在输入标记中使用ng-file-model

 <input accept="image/*" ng-file-model="photo" type="file" multiple/>

现在使用$ http.post上传它

 $http.post('/api/uploadPic',{photo:photo}).
    success(function (data, status) {
       //perform action after upload
    });

我希望这对你有帮助

以上是关于如何以角度2上传base64文件的主要内容,如果未能解决你的问题,请参考以下文章

基于ThinkPHP解决了前端以base64形式传文件实现文件上传的函数封装

Vue结合element ui 实现图片上传可预览,可删除,以base64字符串上传到服务器

php图片上传为啥要base64上传

element ui之图片上传以base64的格式传给后端

ajax异步上传图片文件并将其转换为base64格式

如何在 swift 2.0 中将 .pdf 文件转换为 base64 字符串?