Nervgh角文件上载 - 如何限制的图像的数量来上传? [英] Nervgh Angular File Upload - How to limit the number of images to upload?

查看:267
本文介绍了Nervgh角文件上载 - 如何限制的图像的数量来上传?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是测试出文件这个角模块 Nervgh角文件上载上传到目前为止我能得到它按在这是伟大的指令给出的示例工作。这允许多个上传。虽然我通过我可以使用属性和方法看,我仍然不知道如何限制被允许上传的数量。例如,在我的表格我不想让用户上传超过300张照片。我该怎么做?

I am just testing out this Angular module "Nervgh Angular File Upload" for file upload and so far I was able to get it to work as per the example given in the instruction which is great. This allows multiple uploads. Although I read through the properties and methods I can use, I still dont know how to limit the number of uploads to be allowed. For instance, in my form I dont want to allow users to upload more than 3 photos. How can I do that?

ATM,我用下面的code按在给定的链接上面的例子:

ATM, I am using the following code as per the example given in the link above:

    <!DOCTYPE html>
<html id="ng-app" ng-app="app"> <!-- id="ng-app" IE<8 -->

    <head>
        <title>Uploads only images (with canvas preview)</title>
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />

        <!-- Fix for old browsers -->
        <script src="../bower_components/es5-shim/es5-shim.js"></script>
        <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>

        <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

        <!--<script src="../bower_components/angular/angular.js"></script>-->
        <script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
        <script src="../../angular-file-upload.js"></script>
        <script src="controllers.js"></script>
        <script src="directives.js"></script>

        <style>
            .my-drop-zone { border: dotted 3px lightgray; }
            .ng-file-over { border: dotted 3px red; } /* Default class applied to drop zones on over */
            .another-file-over-class { border: dotted 3px green; }

            html, body { height: 100%; }

            canvas {
                background-color: #f3f3f3;
                -webkit-box-shadow: 3px 3px 3px 0 #e3e3e3;
                -moz-box-shadow: 3px 3px 3px 0 #e3e3e3;
                box-shadow: 3px 3px 3px 0 #e3e3e3;
                border: 1px solid #c3c3c3;
                height: 100px;
                margin: 6px 0 0 6px;
            }
        </style>

    </head>

    <!-- 1. ng-file-drop | ng-file-drop="options" -->
    <body ng-controller="TestController" ng-file-drop>

        <div class="container">

            <div class="navbar navbar-default">
                <div class="navbar-header">
                    <a class="navbar-brand" href="https://github.com/nervgh/angular-file-upload">Angular File Upload</a>
                </div>
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li class="active dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Demos <b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li><a href="../simple">Simple example</a></li>
                                <li class="active"><a href="#">Uploads only images (with canvas preview)</a></li>
                                <li><a href="../without-bootstrap">Without bootstrap example</a></li>
                            </ul>
                        </li>
                        <li><a href="https://github.com/nervgh/angular-file-upload">View on Github</a></li>
                        <li><a href="https://raw.github.com/nervgh/angular-file-upload/master/angular-file-upload.min.js">Download</a></li>
                    </ul>
                </div>
            </div>

            <div class="row">

                <div class="col-md-3">

                    <h3>Select files</h3>

                    <div ng-show="uploader.isHTML5">
                        <!-- 3. ng-file-over | ng-file-over="className" -->
                        <div class="well my-drop-zone" ng-file-over>
                            Base drop zone
                        </div>

                        <!-- Example: ng-file-drop | ng-file-drop="options" -->
                        <div class="well my-drop-zone" ng-file-drop="{ url: '/foo' }" ng-file-over="another-file-over-class">
                            Another drop zone with its own settings
                        </div>
                    </div>

                    <!-- 2. ng-file-select | ng-file-select="options" -->
                    <input ng-file-select type="file" multiple  />

                </div>

                <div class="col-md-9" style="margin-bottom: 40px">
                    <h2>Uploads only images (with canvas preview)</h2>
                    <h3>The queue</h3>
                    <p>Queue length: {{ uploader.queue.length }}</p>

                    <table class="table">
                        <thead>
                            <tr>
                                <th width="50%">Name</th>
                                <th ng-show="uploader.isHTML5">Size</th>
                                <th ng-show="uploader.isHTML5">Progress</th>
                                <th>Status</th>
                                <th>Actions</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr ng-repeat="item in uploader.queue">
                                <td>
                                    <strong>{{ item.file.name }}</strong>
                                    <!-- Image preview -->
                                    <!--auto height-->
                                    <!--<div ng-thumb="{ file: item.file, width: 100 }"></div>-->
                                    <!--auto width-->
                                    <div ng-show="uploader.isHTML5" ng-thumb="{ file: item.file, height: 100 }"></div>
                                    <!--fixed width and height -->
                                    <!--<div ng-thumb="{ file: item.file, width: 100, height: 100 }"></div>-->
                                </td>
                                <td ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
                                <td ng-show="uploader.isHTML5">
                                    <div class="progress" style="margin-bottom: 0;">
                                        <div class="progress-bar" role="progressbar" ng-style="{ 'width': item.progress + '%' }"></div>
                                    </div>
                                </td>
                                <td class="text-center">
                                    <span ng-show="item.isSuccess"><i class="glyphicon glyphicon-ok"></i></span>
                                    <span ng-show="item.isCancel"><i class="glyphicon glyphicon-ban-circle"></i></span>
                                    <span ng-show="item.isError"><i class="glyphicon glyphicon-remove"></i></span>
                                </td>
                                <td nowrap>
                                    <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()" ng-disabled="item.isReady || item.isUploading || item.isSuccess">
                                        <span class="glyphicon glyphicon-upload"></span> Upload
                                    </button>
                                    <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()" ng-disabled="!item.isUploading">
                                        <span class="glyphicon glyphicon-ban-circle"></span> Cancel
                                    </button>
                                    <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
                                        <span class="glyphicon glyphicon-trash"></span> Remove
                                    </button>
                                </td>
                            </tr>
                        </tbody>
                    </table>

                    <div>
                        <p>
                            Queue progress:
                            <div class="progress" style="">
                                <div class="progress-bar" role="progressbar" ng-style="{ 'width': uploader.progress + '%' }"></div>
                            </div>
                        </p>
                        <button type="button" class="btn btn-success btn-s" ng-click="uploader.uploadAll()" ng-disabled="!uploader.getNotUploadedItems().length">
                            <span class="glyphicon glyphicon-upload"></span> Upload all
                        </button>
                        <button type="button" class="btn btn-warning btn-s" ng-click="uploader.cancelAll()" ng-disabled="!uploader.isUploading">
                            <span class="glyphicon glyphicon-ban-circle"></span> Cancel all
                        </button>
                        <button type="button" class="btn btn-danger btn-s" ng-click="uploader.clearQueue()" ng-disabled="!uploader.queue.length">
                            <span class="glyphicon glyphicon-trash"></span> Remove all
                        </button>
                    </div>

                </div>

            </div>

        </div>

    </body>
</html>

有谁知道如何把一个上限,可以以这种形式被允许上传文件的最大数量?

推荐答案

采用了棱角分明文件上传V1.0.2

using angular-file-upload v1.0.2

有predefined过滤器
<一href=\"https://github.com/nervgh/angular-file-upload/wiki/Module-API#$p$pdefined-filters\">https://github.com/nervgh/angular-file-upload/wiki/Module-API#$p$pdefined-filters

There are predefined filters https://github.com/nervgh/angular-file-upload/wiki/Module-API#predefined-filters

predefined过滤器


  • 文件夹

  • queueLimit

设置的限制:

var uploader = new FileUploader({
    queueLimit: 1
});

然后在视图中。

<element nv-file-drop filters="queueLimit"></element>

如果您已设置queueLimit 1,但不希望它的应用。设置过滤器属性为空字符串。当过滤器属性没有设置,所有过滤器适用。

If you have set queueLimit to 1 but don't want it applied. Set the filters attribute to an empty string. When filters attribute is not set, all filters apply.

<element nv-file-drop filters=""></element>

我发现,多个过滤器不能与像DOC空格隔开建议。否则只有第一个过滤器适用。

I found that multiple filters must not be separated with a space like the doc suggest. Or else only the first filter apply.

<element nv-file-drop filters="filterName1,filterName2"></element>

这篇关于Nervgh角文件上载 - 如何限制的图像的数量来上传?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆