【问题标题】:Multi File upload using Angular js and php使用 Angular js 和 php 上传多文件
【发布时间】:2015-12-09 18:24:20
【问题描述】:

我们正在接管一个使用 Angular js 的网站,用于数据和多文件上传(最多 4 个文件)的表单。

我们发布到一个 .php 文件。我已经能够分离和捕获现场数据 - 但似乎只能“看到”一个文件。如果我上传多个文件,我只会“看到”最后一个添加到表单中的文件。

有人可以帮我使用 PHP 获取文件吗?

表单 HTML(用于文件):

<ul class="attachments">
<li ng-repeat="attachment in attachments" class="attachment">
    {{attachment.name}}
<a href="" ng-click="removeAttachment(attachment)"><i class="btn-submit-att-x-hover-off"></i></a>
</li>
</ul>
    <button type="button" class="attachments-button btn btn-default" ngf-select ngf-change="onFileSelect($files)" ngf-multiple="true" ng-if="attachments.length < 4">
    <i class="btn-submit-attch"></i>Upload Attachments
    </button>

Angular JS 代码 - 我看到的文件:

$scope.attachments = [];

//onFileSelect adds file attachments to the $scope up to the
//configured maximum value.
    $scope.onFileSelect = function ($files) {
    var MAX_ATTACHMENTS = 4;
    for(var i=0; i < $files.length; i++){
        if($scope.attachments.length >= MAX_ATTACHMENTS){
        break;
        }
    $scope.attachments.push($files[i]);
        }            
    };

    $scope.removeAttachment = function (attachment) {
        var index = $scope.attachments.indexOf(attachment);
        if (index > -1) {
        $scope.attachments.splice(index, 1);
        }
    };

//POST form data
    $scope.upload = Upload.upload({
        url: 'forms/pressrelease.html',
        method: 'POST',
        data: $scope.model,
        file: $scope.attachments,
        fileFormDataName: "files"
    })

    .success(function (data, status, headers, config) {
        alertSuccess("Your press release has been submitted successfully!");
        $scope.showSuccess = true;
    }

我们使用过的唯一能返回任何东西的 PHP 代码 - 但同样 - 只有 1,或者最后一个文件名是:

    if(isset($_FILES['files'])){ 
$files = $_FILES['files'];

$sentfilename = $_FILES['files']['name'];
$email_body .= "I see files: $sentfilename<br />";

$tmpsentfile = $_FILES['files']['tmp_name'];

$i=0;

$getfile = $files[0];
$sentfilename = $getfile;
$sentfilesize = $_FILES['files']['size'];
$errormessage = $_FILES['files']['error'];

$email_body .= "I see files: $sentfilename<br />";
}

如果有人可以向我们展示我们需要用来捕获这些上传文件的 PHP 代码。

谢谢

【问题讨论】:

    标签: javascript php angularjs


    【解决方案1】:

    创建一个名称数组并发布动态文件名:

    var names = []
    foreach file:
        names.push(files[i].name)
    

    上传中:

      method: 'POST',
        data: $scope.model,
        file: $scope.attachments,
        fileFormDataName: names
    

    【讨论】:

    • 我们在php端使用什么代码来获取每个文件?
    猜你喜欢
    • 2014-03-02
    • 2015-12-06
    • 1970-01-01
    • 2016-04-21
    • 2017-07-26
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多