CKeditor粘贴截图

CKeditor粘贴截图

CKeditor默认是支持截图粘贴的,不过需要我们进行配置

一、CKeditor配置

在CKeditor的config.js中加入以下配置

// 配置粘贴的图片的上传路径
config.uploadUrl="/home/uploadPasteImage";
  
// 添加图片粘贴插件
config.extraPlugins="imagepaste";
二、后台代码
@PostMapping(value = "/uploadPasteImage")
public String uploadPasteImage(@RequestParam("upload") MultipartFile[] file, HttpServletRequest request,
                               HttpServletResponse response, HttpSession session) {

  LOG.info("开始上传粘贴的图片...");

  response.setCharacterEncoding("UTF-8");

  String result = "";
  try {
    for (int i = 0; i < file.length; i++) {
      // 上传图片,返回上传的图片的图片名
      String fileName = ImageUtil.uploadImage(imgTempSavePath, file[i]);

      // 图片的访问路径
      String imgUrl = imgVisitPath+fileName;

      // 上传成功的json
      result = "{\"uploaded\" : 1, \"fileName\" : \""+fileName+"\", \"url\":\""+imgUrl+"\" }";

      LOG.info("图片上传成功...");
      break;
    }
  } catch (Exception e) {

    LOG.error("图片上传失败,error:{}" + e.getMessage());

    // 上传失败的json
    result = "{\"uploaded\" : 1, \"fileName\" : \"image\", \"url\":\"image\" , \"error\" : { \"message\":\"图片上传失败\" } }";
  }

  return result;
}

ImageUtil.java

import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

/**
 * 图片工具类
 **/
public class ImageUtil {

    private final static Logger LOG = LoggerFactory.getLogger(ImageUtil.class);

    /**
     * 上传图片工具类,返回图片名
     * @return
     */
    public static String uploadImage(String tempSavePath, MultipartFile imgFile) throws Exception {

        Date date = new Date();
        String fileName = ((Long)date.getTime()).toString() + imgSuffix(imgFile.getOriginalFilename());

        FileOutputStream fos = null;
        try {
            String path = FileUtil.createChildPath();
            // 创建文件
            File file = FileUtil.createFile(tempSavePath+path, fileName);
            LOG.info("图片名:{}", file.getName());

            fos = new FileOutputStream(file);
            IOUtils.copy(imgFile.getInputStream(), fos);
            LOG.info("图片上传成功");

            return path+file.getName();
        } catch (IOException ex) {
            ex.printStackTrace();
            LOG.error("文件创建失败");
            throw ex;
        } catch (Exception ex) {
            ex.printStackTrace();
            LOG.info("图片上传失败");
            throw ex;
        } finally {
            try {
              if(fos!=null) {
                fos.close();
              }
            } catch(Exception e) {
              e.printStackTrace();
            }
        }
    }
    
	/**
     * 获取图片的格式,带点,例如:.jpg
     * @param imgName
     * @return
     */
    public static String imgSuffix(String imgName) {

        if(StringUtils.isEmpty(imgName)) {
            LOG.error("图片名为空");
            throw new RuntimeException("图片名为空");
        }

        return imgName.substring(imgName.lastIndexOf("."));
    }

}

FileUtil.java

public class FileUtil {

    private final static Logger LOG = LoggerFactory.getLogger(FileUtil.class);
  
    /**
     * 生成文件
     * @param parentPath
     * @param fileName
     * @return
     * @throws IOException
     */
    public static File createFile(String parentPath, String fileName) {

        File parentFile = new File(parentPath);

        // 如果父路径不存在,就先创建父路径
        if(!parentFile.exists()) {
            parentFile.mkdirs();
        }

        // 创建文件
        File file = new File(parentPath + fileName);
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
            LOG.error("文件创建失败");
        }

        return file;
    }
}

此时,就可以将截图直接粘贴到富文本框中了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本插件使用JAVA技术开发,需要配合Javascript使用,可以将网页中含有的本地图片(src为'file:///')自动上传到服务器并修改img标签的src属性为新的图片地址。典型应用场景如:配合ckEditor使用,使从WORD粘贴过来的内容中包含的本地图片自动上传到服务器。 --------------------------------------------------- 依赖环境:JDK1.7 、jQuery、ckEditor4.2、浏览器不限 --------------------------------------------------- 一般使用说明 Javascript API:   类: WordImageUploader(s_url, app_name) s_url:图片上传的服务器页面地址,为动态页面,如servlet、PHP等; app_name:当前应用的名称   在使用本插件前必须首先创建本类的对象,一个页面中最好只存在一个本对象,本类的创建方法如: var uploader = new WordImageUploader(sUrl,appName);   该类的方法有: uploadWordImagesFromCKEditor(editorInstance, pre_id) 本方法用于将CKEditor中的从WORD粘贴过来的文本中的所有本地图片自动上传到服务器,参数意义如下: editorInstance:CKEditor的实例; pre_id:图片上传到服务器后的名称的前辍,方便日后清理等维护工作,如不需要,设为'';   uploadLocalFile(localUrl, name) 本方法用于将单独本地图片上传到服务器,参数意义如下: localUrl:图片的本地URL,一般形式为:file:///xxx name:图片的名称   使用步骤:   1、引入jQuery类库; 2、引入js文件夹下的wordimage_uploader.js; 3、创建WordImageUploader对象; 4、ckEditor内容改变时调用uploadWordImagesFromCKEditor方法。 插件安装完成后应在网页状态档位置显示“监控台:欢迎使用“本地图片自动上传插件”。 --------------------------------------------------- 本插件支持所有动态网站技术,DEMO所用技术为jsp,服务器端接受上传文件的动态页面为一Servelt:WordImageUploader.java,此文件已经在DEMO中给出,其它动态网站技术请参照此文件自行实现。 --------------------------------------------------- 其它使用详情请参见DEMO源码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值