jquery.filer 删除已上传的文件


jquery.filer remove already uploaded files

我对jquery.filer有问题!

    $(document).ready(function() {
        $('#filer_input').filer({
          showThumbs: true,
          templates: {
            box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>',
            item: '<li class="jFiler-item">'
                        <div class="jFiler-item-container">'
                            <div class="jFiler-item-inner">'
                                <div class="jFiler-item-thumb">'
                                    <div class="jFiler-item-status"></div>'
                                    <div class="jFiler-item-info">'
                                        <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>'
                                        <span class="jFiler-item-others">{{fi-size2}}</span>'
                                    </div>'
                                    {{fi-image}}'
                                </div>'
                                <div class="jFiler-item-assets jFiler-row">'
                                    <ul class="list-inline pull-left"></ul>'
                                    <ul class="list-inline pull-right">'
                                        <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>'
                                    </ul>'
                                </div>'
                            </div>'
                        </div>'
                    </li>',
            itemAppend: '<li class="jFiler-item">'
                            <div class="jFiler-item-container">'
                                <div class="jFiler-item-inner">'
                                    <div class="jFiler-item-thumb">'
                                        <div class="jFiler-item-status"></div>'
                                        <div class="jFiler-item-info">'
                                            <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>'
                                            <span class="jFiler-item-others">{{fi-size2}}</span>'
                                        </div>'
                                        {{fi-image}}'
                                    </div>'
                                    <div class="jFiler-item-assets jFiler-row">'
                                        <ul class="list-inline pull-left">'
                                            <li><span class="jFiler-item-others">{{fi-icon}}</span><span class="jFiler-item-others">{{fi-size2}}</span></li>'
                                        </ul>'
                                        <ul class="list-inline pull-right">'
                                            <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>'
                                        </ul>'
                                    </div>'
                                </div>'
                            </div>'
                        </li>',
            itemAppendToEnd: false,
            removeConfirmation: true,
            _selectors: {
            list: '.jFiler-items-list',
            item: '.jFiler-item',
            remove: '.jFiler-item-trash-action'
            }
            },
         addMore: true,
         limit:8,
         maxSize:2,
         extensions: ['jpg','gif','png'],
         files: [
        <?php 
        $path=SITEBASE.'uploads/';
        $i = 1;
        foreach (unserialize($input['gallery']) as $key => $photo) : ?>
            {
            name: "photo<?=$i?>.jpg",
            size: <?=filesize(UPLOAD.$photo)?>,
            type: "image/jpg",
            file: "<?=$path.$photo?>"
            },
        <?php 
        $i++;
        endforeach; ?>    
        ]
          });       
        });

这是我对文件管理器的"配置"。

<form name="photoform" method="post" action="" enctype="multipart/form-data">
<input type="file" name="files[]" id="filer_input" multiple="multiple">
<input type="submit" name="photoformuploadphoto" value="SEND" />
</form>

现在,在结果中,一切都完美显示。所有已上传的图片都会显示在网站上。

我尝试上传新文件并添加到数据库。

$uploader = new Uploader();
    $data = $uploader->upload($_FILES['files'], array(
        'limit' => 8, //Maximum Limit of files. {null, Number}
        'maxSize' => 2, //Maximum Size of files {null, Number(in MB's)}
        'extensions' => array('jpg', 'png', 'gif'), //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))}
        'required' => false, //Minimum one file is required for upload {Boolean}
        'uploadDir' => UPLOAD, //Upload directory {String}
        'title' => array('auto', 30), //New file name {null, String, Array} *please read documentation in README.md
        'removeFiles' => true, //Enable file exclusion {Boolean(extra for jQuery.filer), String($_POST field name containing json data with file names)}
        'onRemove' => 'onFilesRemoveCallback' //A callback function name to be called by removing files (must return an array) | ($removed_files) | Callback
    ));
    if($data['isComplete']){
        $files = $data['data'];
        foreach($files["metas"] as $value){  
        $gallery[]=$value["name"];
        imageResize($value["file"], UPLOAD.'thumb/'.$value["name"], '190', '114', 0);
    }
    $sql_update="UPDATE `".PREFIX."users` SET `gallery`='".serialize($gallery)."' WHERE `id`=".$_POST["id"];
    query($sql_update);
       // echo '<pre>';print_r($files);echo '</pre>';
    }
    if($data['hasErrors']){
        $errors = $data['errors'];
        //print_r($errors);
    }
    function onFilesRemoveCallback($removed_files){
        foreach($removed_files as $key=>$value){
            $file = UPLOAD . $value;
            $thumb = UPLOAD.'thumb/' . $value;
            if(file_exists($file)){
                unlink($file);
            }
            if(file_exists($thumb)){
                unlink($thumb);
            }
        }
        return $removed_files;
    }

不幸的是,$files = $data['data'] 只返回新上传的文件。这意味着我已经上传的文件被删除了。

你知道怎么解决吗?

你需要:1. 从数组中的 MySQL 获取旧文件2.将上传的文件添加到旧文件中

$db_images = $db_row['images']; //only example
if($data['isComplete']){
    $files = $data['data'];
    foreach($files["files"] as $value){
        $db_images[] = $value;
    }
}
// now $db_images is ready
// write your query to update