kindeditor编辑器一键保存远程图片

其实做起来分为这个几部

1.先获取到你所复制的HTML代码内容

2.通过正则表达式获取到img标签中的src地址

3.将获取到的地址通过ajax传到后台进行下载,并将保存后的地址返回到前台

4.获取后台返回的url进行替换

5.调用kindeditor编辑器的同步函数 将源码和HTML展示的内容进行同步,不然有时候你会发现你明明已经将url进行了替换,但是保存后却还是远程地址。

具体代码前台JS代码:

function uploadpic(img) {
$("#image-loading-modal").modal({
backdrop : 'static'
});
var img = $(".ke-edit-iframe").contents().find("img");
$(img).each(function (i) {
   var that = $(this);
   if (that.attr("src").indexOf("http://") >= 0 || that.attr("src").indexOf("https://") >= 0) {
    $.ajax({
       url: lm.global.server+"upload/remoteImage",
       data: "imgUrl=" + that.attr("src").split("?")[0],
       type: "POST",
       dataType: "json", 
       async: false,
       success: function (data) {
        that.attr("src",data.url);
        that.attr("data-ke-src",data.url);
       }
   });
   }
});
editor.sync(); //同步函数
}
我这里是一张张图片上传的,有需要的话可以将所有图片地址全部获取到后,一次性全部上传

后台JAVA代码:

/**
* 下载图片
* @param urlString
* @param filename
* @throws Exception
*/
    @ResponseBody
    @RequestMapping("upload/remoteImage")
public String remoteImage(String imgUrl,HttpServletRequest request, HttpServletResponse response) {
InputStream is = null;
OutputStream os = null;
String name=null;
// 文件保存目录路径
        String savePath = context.getRealPath("/")+"/attached/";
        // 文件保存目录URL
        String saveUrl = request.getContextPath() + "/attached/";
        
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      String ymd = sdf.format(new Date());
      savePath=savePath+ymd+"/";
      saveUrl=saveUrl+ymd+"/";
      
      response.setContentType("text/html; charset=UTF-8");
try {
// 构造URL
URL url = new URL(imgUrl);
// 打开连接
URLConnection con = url.openConnection();
// 设置请求超时为5s
con.setConnectTimeout(5 * 1000);
// 输入流
is = con.getInputStream();

// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
//新文件名称
String fileExt = FileExtUtils.fileSuffix(imgUrl);
            name = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + "_"+ new Random().nextInt(1000) + "." + fileExt;
            
            Path path = Paths.get(savePath);
            if (!Files.isDirectory(path)) {
                try {
                    Files.createDirectories(path);
                } catch (IOException e) {
                    e.printStackTrace();
                    throw new UploadException("上传附件时,创建文件夹错误:"+path);
                }
            }
os = new FileOutputStream(savePath+"/"+name);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
            throw new UploadException("上传附件,保存文件到服务器失败:" + savePath + name);
} finally {
try {
// 完毕,关闭所有链接
if (os != null) {
os.close();
}
if(is!=null){
is.close();
}
} catch (Exception e2) {

}
}
KindeditorResult result = new KindeditorResult(0,saveUrl+name,"保存成功");
        result.setFileName(name);
        result.setRealPath(savePath+name);
        return JSON.toJSONString(result);
}

原文地址:http://www.zhenganla.com/tech/20160928/251.html

转载于:https://my.oschina.net/u/2930130/blog/752970

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: KindEditor编辑器可以通过以下步骤上传多张图片: 1. 点击编辑器中的“插入图片”按钮。 2. 在弹出的对话框中,选择“上传图片”选项卡。 3. 点击“选择文件”按钮,选择要上传的图片文件。 4. 重复步骤3,选择多张图片文件。 5. 点击“开始上传”按钮,等待上传完成。 6. 上传完成后,可以在“已上传图片”选项卡中查看已上传的图片。 7. 选中要插入的图片,点击“确定”按钮即可插入到编辑器中。 注意:上传多张图片时,需要等待每张图片上传完成后再选择下一张图片,否则可能会导致上传失败。 ### 回答2: kindeditor是一款非常常用的富文本编辑器,它不仅提供了基本的文本编辑功能,而且还支持上传多张图片的功能。下面就详细介绍一下如何使用kindeditor上传多张图片。 1. 准备工作 首先,在使用kindeditor上传多张图片之前,我们需要先准备好以下内容: ① kindeditor编辑器文件 ② kindeditor上传图片的处理程序文件,这个一般是后台开发人员编写的 ③ 存储上传图片的文件夹,这个一般由后台开发人员在处理程序中设置。 2. 设置kindeditor编辑器 在前端页面中,我们需要先引入kindeditor编辑器的相关文件。这些文件一般包括kindeditor.js和kindeditor.css等。引入之后,我们需要对kindeditor进行一些基本设置,如设置编辑器的宽度、高度等。同时,还需要在配置文件中设置上传图片的选项。 其中,设置上传图片的选项需要设置上传图片的处理程序地址、允许上传的图片类型、最大可以上传的图片大小、是否可以上传多张图片等。 3. 编写后端处理程序 在上传图片的处理程序中,我们一般需要在程序中编写以下基本功能: ① 判断上传的文件是否合法,包括文件类型是否允许上传、文件大小是否在规定范围内等。 ② 将上传的图片保存到指定文件夹中。 ③ 返回上传结果,一般是返回上传的图片地址或者上传失败的原因等。 4. 使用 在前端页面中,我们可以通过点击上传图片按钮来触发上传图片的功能。在点击上传图片按钮后,会弹出选择图片的对话框,我们可以选择多张图片,然后分别进行上传。上传完成后,可以在编辑器中看到上传的图片。 总的来说,kindeditor上传多张图片的功能非常实用,可以让我们的文章或网站更加丰富和有趣。同时,对于后端开发人员来说,也需要注意上传图片的文件类型和大小等问题,以确保上传图片的安全性和稳定性。 ### 回答3: KindEditor是一款基于jQuery和Zlib的网页富文本编辑器,它支持表格、混合开发、超过40种已配置的插件、代码自动提示与补全。在KindEditor中,用户可以方便地插入各类多媒体元素,包括图片、音视频等。也就是说,在KindEditor中上传多张图片非常容易。 具体的上传过程可以分为以下几个步骤: 1. 在前端页面中添加一个文件上传控件,例如: <input type="file" id="file" name="file" multiple/> 其中,multiple属性表示可以选择多个文件进行上传。 2. 在JavaScript中添加上传代码。使用KindEditor自带的uploadJson接口可以实现多张图片的上传: KindEditor.ready(function(K) { var editor = K.editor({ // 设置上传接口 uploadJson: '/upload_json.php', fileManagerJson: '/file_manager_json.php' }); K('#upload_img_btn').click(function() { editor.loadPlugin('multiimage', function() { // 打开上传多张图片的窗口 editor.plugin.multiImageDialog({ clickFn: function(data) { // 上传成功后执行的回调函数 } }); }); }); }); 在上述代码中,uploadJson属性设置上传接口,multiImageDialog方法打开多张图片上传的窗口。 3. 在服务器端编写PHP代码处理上传请求。具体的实现方式因不同的后端语言而异,在PHP中,可以使用$_FILE数组来处理上传文件。例如: if(!empty($_FILES['file']['name'])) { $fileArr = $_FILES['file']; for($i=0; $i<count($fileArr['name']); $i++) { $tmp_name = $fileArr['tmp_name'][$i]; $name = $fileArr['name'][$i]; // 保存文件到指定目录 move_uploaded_file($tmp_name, 'uploads/'.$name); $urlArr[] = 'uploads/'.$name; } echo json_encode(array('error' => 0, 'data' => $urlArr)); } 其中,$fileArr为上传的文件数组,$urlArr保存上传成功后每个文件的URL地址。 综上所述,KindEditor编辑器上传多张图片的步骤包括前端文件上传控件的添加、JavaScript上传代码的编写以及后端服务器代码的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值