Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Summernote-从服务器中删除映像_Php_Jquery_Html_Summernote - Fatal编程技术网

Php Summernote-从服务器中删除映像

Php Summernote-从服务器中删除映像,php,jquery,html,summernote,Php,Jquery,Html,Summernote,您好,我已经使用了下面链接中的代码来允许将图像上载到服务器。 如果用户从编辑器中删除图像,是否可以实现类似于从服务器中删除图像的功能?如果是这样的话,我如何才能做到这一点呢?我想你现在已经解决了这个问题,但由于我一直在寻找相同的答案,并最终成功实现了这一点,我的方法是: 首先,我在summernote的textarea中获取所有img src,然后读取服务器上文件夹中的所有img文件。然后,我取消链接文件夹中不在summernote的img src数组中的文件 $dom = n

您好,我已经使用了下面链接中的代码来允许将图像上载到服务器。


如果用户从编辑器中删除图像,是否可以实现类似于从服务器中删除图像的功能?如果是这样的话,我如何才能做到这一点呢?

我想你现在已经解决了这个问题,但由于我一直在寻找相同的答案,并最终成功实现了这一点,我的方法是:

首先,我在summernote的
textarea
中获取所有
img src
,然后读取服务器上文件夹中的所有
img
文件。然后,我
取消链接
文件夹中不在summernote的img src数组中的文件

        $dom = new domDocument;
        $dom->loadHTML(html_entity_decode($content));
        $dom->preserveWhiteSpace = false;
        $imgs  = $dom->getElementsByTagName("img");
        $links = array();
        $path = '../content/'.$id.'/';
        $files = glob($path . "*.*");
        for($i = 0; $i < $imgs->length; $i++) {
           $links[] = $imgs->item($i)->getAttribute("src");
        }
        $result=array_diff($files, $links);
           foreach($result as $deleteFile) {
               if (file_exists($deleteFile)) {
                 array_map('unlink', glob($deleteFile));
               }
           }
       } 

我将summernote文本区的内容存储在
$contentPost
中。然后,
doAjax
将调用PHP并发布
$content
。如果服务器上的
img
不在
$content
中,它将被删除

如果我们能够在客户端捕捉到用户删除图像操作的事件,我们就可以调用ajax来删除图像。但我不知道是不是。我也在寻找解决方案。

要删除文件表单服务器,您需要在MediaDelete上使用
,但用法因summernote版本而异,有时很难在文档中找到

适用于SUMMERNOTE 0.6.x

$(document).ready(function() {
    $('.summernote').summernote({
        height: "300px",
         onMediaDelete : function($target, editor, $editable) {
         alert($target.context.dataset.filename);         
         $target.remove();
    }
    });
});
$(document).ready(function() {
    $('.summernote').summernote({
        height: "300px",
        onMediaDelete : function(target) {
                deleteFile(target[0].src);
            }

    });
});
适用于SUMMERNOTE 0.7.x

$(document).ready(function() {
    $('.summernote').summernote({
        height: "300px",
         onMediaDelete : function($target, editor, $editable) {
         alert($target.context.dataset.filename);         
         $target.remove();
    }
    });
});
$(document).ready(function() {
    $('.summernote').summernote({
        height: "300px",
        onMediaDelete : function(target) {
                deleteFile(target[0].src);
            }

    });
});
对于SUMMERNOTE 0.8.x(使用回调)

Javascript:使用img src删除文件的示例

function deleteFile(src) {

    $.ajax({
        data: {src : src},
        type: "POST",
        url: base_url+"dropzone/delete_file", // replace with your url
        cache: false,
        success: function(resp) {
            console.log(resp);
        }
    });
}
<?php
  $src = $this->input->post('src'); // $src = $_POST['src'];
  $file_name = str_replace(base_url(), '', $src); // striping host to get relative path
        if(unlink($file_name))
        {
            echo 'File Delete Successfully';
        }
?>
PHP:检索img src后删除图像的示例

function deleteFile(src) {

    $.ajax({
        data: {src : src},
        type: "POST",
        url: base_url+"dropzone/delete_file", // replace with your url
        cache: false,
        success: function(resp) {
            console.log(resp);
        }
    });
}
<?php
  $src = $this->input->post('src'); // $src = $_POST['src'];
  $file_name = str_replace(base_url(), '', $src); // striping host to get relative path
        if(unlink($file_name))
        {
            echo 'File Delete Successfully';
        }
?>


这就是我使用的,只是,delete事件不会像backspace那样在按键时触发,也许将来会有一个keyEvent来处理这个问题。

在Django中,我使用regex在原始html中查找IMG 如果我删除帖子,或者编辑后它有不同的img,我会删除它们

from traceback import print_exc
import re
import os

def get_imgs(html):
    pat = re.compile(r'<img [^>]*src="([^"]+)')
    imgs = pat.findall(html)
    return imgs

def delete_imgs(imgs):
    if imgs:
        base = os.getcwd()
        for img in imgs:
            try:
                img_path = os.path.join(base, img[1:])
                if os.path.exists(img_path):
                    os.remove(img_path)
            except Exception as e:
                print_exc(e)
                print(imgs)
                print(img_path)
来自回溯导入打印\u exc
进口稀土
导入操作系统
def get_imgs(html):

pat=re.compile(r'我在哪里可以找到更具体的指南呢?很好的解决方案,但是,如果有人只用退格键删除了图像,会发生什么情况?),似乎回调不会触发…@4Jean,我知道已经有一段时间了,但在我的网站上仍然不起作用。我使用的是summernote-bs4.min.js,直接从summernote官方网站下载。可以吗你能告诉我你当时用的是哪个版本吗?谢谢。