Javascript AngluarJS和FileReader如何将文件保存到路径

Javascript AngluarJS和FileReader如何将文件保存到路径,javascript,angularjs,Javascript,Angularjs,接下来,关于如何使用AngularJS上传文件,我不知道这实际上是如何工作的 据我所知,这些文件只是显示在“选择”部分之后,但它们从未真正上传到服务器上,如果是这样的话?如果是,如何更改代码以将文件保存在服务器上的特定路径上?如果不是关于这段代码如何工作的一些解释 html代码: <div ng-controller="MyCtrl"> <div ng-repeat="step in stepsModel"> <img class="thum

接下来,关于如何使用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);
        });
    }
}
var myApp=angular.module('myApp',[]);
函数MyCtrl($scope){
$scope.stepsModel=[];
$scope.imageUpload=函数(事件){
var files=event.target.files;//文件列表对象
对于(var i=0;i
我猜您想要上传文件并通过一个请求将特定路径传递给服务器

要在一个POST请求中发送数据(此处为带有“path”字段的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});
})

显示如何仅上载文件

嘿,谢谢你的回复。我现在抬头看了看tnx给你看,学会了分配。但是我不明白你说的服务器端代码是什么意思?你能解释一下吗?Angular在客户端工作。此js代码将POST请求(带有文件和路径)发送到服务器。现在服务器应该使用这个请求,我编写了如何从请求中获取路径的示例。这个例子展示了js服务器(nodejs),但当然服务器可以用任何语言编写。服务器端示例只是添加。也许我应该把它从关于客户端的问题(angularjs)的答案中删除。好吧,我现在明白了,所以可能是因为我把upload.php文件弄错了,所以它现在对我不起作用。如果你能告诉我文件的外观和php版本,那就太好了,这样我就知道从哪里开始了。在php中,我可以在上传文件中使用url和get方法来创建路径。非常感谢。我还是接受了答案。对不起,我不使用(也不知道)php。我使用nodejs。