javascript - AngularJS和FileReader如何将文件保存到路径

标签 javascript angularjs

关注此example关于如何使用 AngularJS 上传文件,我不知道它实际上是如何工作的。

据我了解,这些文件只是在选择部分之后显示,但它们实际上从未上传到它自己的服务器,如果是这样的话?如果是,我如何更改代码以将文件保存在服务器上的特定路径上?如果不是关于此代码如何工作的一些解释。

html代码:

<div ng-controller="MyCtrl">
    <div ng-repeat="step in stepsModel">
        <img class="thumb" ng-src="{{step}}" />
    </div>
    <input type='file' ng-model-instant onchange="angular.element(this).scope().imageUpload(event)" multiple />
</div>

JS:

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

function MyCtrl($scope) {
    $scope.stepsModel = [];

    $scope.imageUpload = function(event){
         var files = event.target.files; //FileList object

         for (var i = 0; i < files.length; i++) {
             var file = files[i];
                 var reader = new FileReader();
                 reader.onload = $scope.imageIsLoaded; 
                 reader.readAsDataURL(file);
         }
    }

    $scope.imageIsLoaded = function(e){
        $scope.$apply(function() {
            $scope.stepsModel.push(e.target.result);
        });
    }
}

最佳答案

我猜您想上传文件并通过一个请求传递特定路径到服务器。

要在一个 POST 请求中发送数据(此处为带有“路径”字段的 json)和文件,请将两者添加到表单数据:

myApp.service('fileUpload', ['$http', function ($http) {
    this.uploadFileToUrl = function(file, uploadUrl){
        var fd = new FormData();
        fd.append('file', file);

        var info = {
            "path":"specific path"
        };
        fd.append('data', angular.toJson(info));

        $http.post(uploadUrl, fd, {
             transformRequest: angular.identity,
             headers: {'Content-Type': undefined}
        })

        .success(function(){
        })

        .error(function(){
        });
    }
}]);

在服务器端,它位于req.body.data中,因此可以像这样接收它:

upload(req, res, function (err) {
    if (err) {
        res.json({error_code: 1, err_desc: err});
        return;
    }

    console.log(req.body.data);

    res.json({error_code: 0, err_desc: null});
})

This tutorial显示如何仅上传文件。

关于javascript - AngularJS和FileReader如何将文件保存到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503260/

相关文章:

javascript - AngularJS ng-repeat 不循环数组

javascript - 使用 $http 上传文件

javascript - 显示 HTTP 请求时间

javascript - Material UI 是否有 Image 组件?

javascript - 将计数作为属性添加到 javascript 对象

javascript - 在 firebase 中克隆直接数组

javascript - AngularJs : $http chaining

javascript - KnockoutJS 新添加的元素没有样式表中的任何样式

JavaScript: '!0' 是 boolean 值 'true' 的简写吗?

angularjs - AngularAMD、动态 UI 路由器、RequireJS - "Error: ' MyDashboardCtrl' 不是函数,未定义”