【问题标题】:how to delete image from folder using dropzone?如何使用dropzone从文件夹中删除图像?
【发布时间】:2017-08-21 07:01:16
【问题描述】:

我正在使用 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.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
    )

)

谁能帮我解决这个问题。在此先感谢:)

【问题讨论】:

  • 当我想从文件夹中删除图像时,它给了我错误它给出了什么错误?
  • ContributorController.php 第 286 行中的 ErrorException:取消链接(G:\xampp\htdocs\bantu/public/images/ContributorImages/):权限被拒绝
  • 好吧 Permission denied 发生错误,因为您尝试删除文件而没有足够/正确的权限来执行此操作。
  • 现在检查@devk

标签: php jquery laravel dropzone.js


【解决方案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 数据获取。从文件名中,您可以照常删除图像。

【讨论】:

  • 我不明白你的情况,请你详细说明我如何使用删除文件功能,我必须定义 deleteImage id
  • 首先您必须在表单中创建一个隐藏文件,然后从 dropzone 中删除图像时,您必须将该文件名作为 CSV 发送到隐藏文件。提交表单后,您可以在控制器中获取 POST 数据,您可以使用 CSV 数据删除图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
相关资源
最近更新 更多