如何在无脂肪框架上传文件?

时间:2015-12-03 06:18:55

标签: php jquery angularjs fat-free-framework

如何在无脂肪框架中上传文件。我使用angularjs在无脂肪框架发送帖子请求。我想使用文件扩展名.jpg和大小2mb,并限制只有4个文件。请指导我。

这是我的HTML代码 -

 <div class="col-md-9" style="margin-bottom: 40px" ng-controller="AppController" nv-file-drop="" uploader="uploader" filters="queueLimit, customFilter">
                    <h3> upload</h3>
                    <div ng-show="uploader.isHTML5">

                        <input type="file" nv-file-select="" uploader="uploader" multiple  /><br/>


                        <table class="table">
                            <tbody>
                                <tr ng-repeat="item in uploader.queue">
                                    <td><strong>{{ item.file.name }}</strong></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>

                </div>

这是我的角度控制器

'use strict';

.module('app', ['angularFileUpload'])


.controller('AppController', ['$scope', 'FileUploader', function($scope, FileUploader) {
    var uploader = $scope.uploader = new FileUploader({
        url: 'uploadfile'
    });

    // FILTERS

    uploader.filters.push({
        name: 'customFilter',
        fn: function(item /*{File|FileLikeObject}*/, options) {
            return this.queue.length < 10;
        }
    });


    console.info('uploader', uploader);
}]);

这是我的无脂代码

 $f3->route('GET|POST|PUT /uploadfile',
    function($f3) use($db){
     //print_r($f3['BODY']);die;
     $data = $f3['BODY'];
     print_r($data);
     $file_name = $data['filename'];  
     $file = "/ui/uploads";
     $file .= $id . "/";
     $file .= $file_name;
     $f3->set('SESSION.id', $file);
     echo var_dump($file);

    }
);

1 个答案:

答案 0 :(得分:2)

$f3->route('GET|POST|PUT /uploadfile',
    function($f3) use($db){
     $f3->set('UPLOADS','uploads/'); // don't forget to set an Upload directory, and make it writable!

        $overwrite = false; // set to true, to overwrite an existing file; Default: false
        $slug = true; // rename file to filesystem-friendly version
        $web = \Web::instance();
        $files = $web->receive(function($file,$formFieldName){
                var_dump($file);
                /* looks like:
                  array(5) {
                      ["name"] =>     string(19) "csshat_quittung.png"
                      ["type"] =>     string(9) "image/png"
                      ["tmp_name"] => string(14) "/tmp/php2YS85Q"
                      ["error"] =>    int(0)
                      ["size"] =>     int(172245)
                    }
                */
                // $file['name'] already contains the slugged name now

                // maybe you want to check the file size
                if($file['size'] > (2 * 1024 * 1024)) // if bigger than 2 MB
                    return false; // this file is not valid, return false will skip moving it

                // everything went fine, hurray!
                return true; // allows the file to be moved from php tmp dir to your defined upload dir
            },
            $overwrite,
            $slug
        );

        //var_dump($files);
        //$files will contain all the files uploaded, in your case 1 hence $files[0];
        $answer = array( 'answer' => 'Files transfer completed' );
        $json = json_encode( $answer );
        echo $json;

    }
);

文件上传通过POST完成(根据您的angularUploadModule) 您可以在此处查看更多内容:http://fatfreeframework.com/web#receive