如何使用dropzone从文件夹中删除图像?

问题描述 投票:0回答:1

我正在使用laravel框架5.2。我已经成功实现了dropzone,我也完成了上传图片。现在的问题是,当我想从文件夹中删除图像时,它给了我错误。我认为我的代码不适合删除图片。

这是我的添加上传图片功能我在会话中上传了图片: -

public function addContributorimages(Request $request){
    if($request->ajax()){
        $image=$_FILES['file'];
        if(!empty($image)){
            if($image['error']==0){
                $name = pathinfo($_FILES['file']['name']);
                $ext = $name['extension'];
                $rand=str_random(24).'.'.$ext;
                $destination = base_path() . '/public/images/ContributorImages/';
                if(is_uploaded_file($image['tmp_name'])){
                list( $width, $height, $source_type ) = getimagesize($image['tmp_name']);
                if ($width >= 10 && $height >= 10){
                    move_uploaded_file($image['tmp_name'],$destination.$rand);
                    $request->session()->put('contributorimage.'.str_random(5).'.image',$rand);
                    $images = $request->session()->get('contributorimage');
                    echo "<pre>"; print_r($images);
                }
                else{     
                        echo "Error";die;
                    }
                }
            }
        }
    }
}

这是我添加的图像功能这是我的dropzone代码: -

Dropzone.autoDiscover = false;
    var fileList = new Array;
    var i =0;
    $("#my-awesome-dropzone").dropzone({
        method:'POST',
        maxFiles: 10,
        paramName: "file",
        maxFilesize: 10,
        addRemoveLinks: true, 
        acceptedFiles: ".jpeg,.jpg,.png,.gif",
        clickable: true,

        init: function() {

            // Hack: Add the dropzone class to the element
            $(this.element).addClass("dropzone");
            this.on("sending",function(file, xhr, formData) {
                formData.append("_token", "{{ csrf_token() }}");
            });
            this.on("success", function(file, serverFileName) {
                fileList[i] = {"serverFileName" : serverFileName, "fileName" : file.name,"fileId" : i };
                //console.log(fileList);
                i++;

            });
            this.on("removedfile", function(file) {
                var rmvFile = "";
                for(f=0;f<fileList.length;f++){

                    if(fileList[f].fileName == file.name)
                    {
                        rmvFile = fileList[f].serverFileName;

                        if (rmvFile){
                            $.ajax({
                                type: 'POST',
                                url: '../contributor/delete-subimages/'+rmvFile,
                            });
                        }
                    }
                }

            });

        },
        url: '../contributor/add-subimages',
    });

});

我的图像已成功上传,但我想从会话以及文件夹中删除图像任何人都可以帮助我如何做到这里这是我的图像删除功能: -

public function deleteContributorImage(Request $request,$name = null){
    $imageName=explode('.',$name);
    $imageRandomName = $request->session()->get('contributorimage.'.$imageName[0].'.image');
    $destination = base_path() . '/public/images/ContributorImages/';
    if(unlink($destination.$imageRandomName)){
        $request->session()->forget('contributorimage.'.$imageName[0]);
        echo "success";
    }
    else{
        echo "failed";
    }
}

现在,当我上传图像时,它创建了这个会话,现在我在会话中有两个图像

Array
(
[Dkf08] => Array
    (
        [image] => whywu3dprVPKKkhUgdIMAdLQ.jpg
    )

[rH5NV] => Array
    (
        [image] => i2sZEqjMdiQHcKRyy5Km9vlu.jpg
    )

)

任何人都可以帮我解决这个问题。提前致谢 :)

php jquery laravel dropzone.js
1个回答
1
投票

你必须为它创建一个隐藏的字段,当你从dropzone删除文件时,该文件名应保存在该隐藏的文件中。

myDropzone.on('removedfile', function (file) {

        var hidden_filed= document.getElementById('hidden_filed').value;
        if (alreadyRemove == "") {
            $('#deleteImage').val(file.name);
        } else {
            $('#deleteImage').val(hidden_filed+ ',' + file.name);
        }
    });

之后,将该字段作为控制器中的POST数据。从文件名中,您可以像往常一样删除图像。

© www.soinside.com 2019 - 2024. All rights reserved.