gpt4 book ai didi

javascript - 如何点击提交按钮上传多个文件(每个文件最多包含 1 个文件)?

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:38 25 4
gpt4 key购买 nike

嗨,我正在使用 Angularjs 和 api 开发文件上传模块。我正在关注https://jsfiddle.net/JeJenny/vtqavfhf/ 。我有一份 list ,其中包含护照、签证等文件名称。我将此列表绑定(bind)到数组并在 ng-repeat 内循环。因此,它根据文档的数量生成如下文件上传控件。

<div class="upload-button" ng-repeat="file in files">
<div class="upload-button-icon">
<img src="images/folder-small.png">
<div class="upload-text">{{file}}</div>
<input type="file" id="file1" name="file1" file-model="{{file}}" />
</div>
</div>

注意:我们可以一次上传一个文档。很明显,如果我在文件数组中有 4 个文档,那么将生成 4 个文件上传控件。

最后我有一个按钮,单击即可保存上述所有文件。

   <input type="submit" value="{{ 'NEXT' | translate }}" class="blue-button" ng-click="uploadFile(files)">

我有这个功能来保存文件(取自fiddler)

$scope.uploadFile = function(filename){
//Here i want to save all the files. For example if there are three documents in array files then 3 documents at a time i want to send it to server.
};

如您所见,fiddler 将具有单独的函数来单独保存每个文件。我正在尝试一次发送所有文件。

我可以在这里得到一些帮助吗?我不确定 $scope.uploadFile 函数中应该写什么?我如何在这里收集所有文件数据?谢谢。

最佳答案

这是一个工作示例,希望对您有所帮助

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

myApp.directive('fileModel', ['fileUpload', function(fileUpload) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind("change", function(evt) {
fileUpload.pendingFiles[attrs.fileModel] = evt.target.files[0];
});
}
};
}]);

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

var service = {
uploadUrl: "https://httpbin.org/post",
pendingFiles: [],
doUpload: doUpload
};

return service;

function doUpload() {
var files = new FormData();
angular.forEach(this.pendingFiles, function(value, key) {
files.append('file', value);
});

return $http.post(this.uploadUrl, files, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
})
}
}]);

myApp.controller('myCtrl', ['$scope', 'fileUpload', function($scope, fileUpload) {
$scope.fileInputs = [1, 2, 3];
$scope.upload = function(filename) {
fileUpload.doUpload().success(function(success) {
$scope.result = success
});
};
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="myApp">
<div ng-controller="myCtrl">
<div ng-repeat="fileInput in fileInputs">
<input type="file" file-data="{{fileInput}}" file-model="{{fileInput}}" />
</div>
<br />
<button ng-click="upload()">upload all</button>
<br />
<pre>{{result | json}}</pre>
</div>
</body>

关于javascript - 如何点击提交按钮上传多个文件(每个文件最多包含 1 个文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com