zoukankan      html  css  js  c++  java
  • UEditor上传图片到七牛云储存(java)

    我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿

    云储存:普遍说又拍云和七牛比较好,看到七牛免费额度很大,网上评价也挺好的,我就选了七牛

    编辑器:我用的是百度的UEditor编辑器,之后需要修改一些的开放的类和js文件

    下面写一下java版本(maven)的修改方法(c#版本在上一篇

    一、集成UEditor

    1、在项目中加入UEditor

    在UEditor的下载页,可以下载到最新的1.4.3.3 Jsp版本(UTF-8),把解压出的文件夹放进项目

    2、在项目中加入UEditor的后端程序

    在UEditor的下载页,下载1.4.3.3 完整源码(里面有jsp版后端的源码),因为上面jsp版里的只有UEditor的jar包,引用jar包的话就改不了了,所以我们还是把源码放进项目来改

    把ueditor1_4_3_3-src.rar -> jsp -> src里的com文件夹拷进项目,然后在maven的pom.xml里引用:

    <dependency>
    	<groupId>commons-codec</groupId>
    	<artifactId>commons-codec</artifactId>
    	<version>1.9</version>
    </dependency>
    <dependency>
    	<groupId>commons-fileupload</groupId>
    	<artifactId>commons-fileupload</artifactId>
    	<version>1.3.1</version>
    </dependency>
    <dependency>
    	<groupId>commons-io</groupId>
    	<artifactId>commons-io</artifactId>
    	<version>2.4</version>
    </dependency>
    <dependency>
    	<groupId>org.json</groupId>
    	<artifactId>json</artifactId>
    	<version>20160212</version>
    </dependency>
    

    3、将UEditor嵌入页面

    新建一个页面,内容是:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>UEditor上传图片到七牛(java)</title>
    	<script type="text/javascript">
    		window.UEDITOR_HOME_URL = '/demo/UEditor/';
    	</script>
    	<script src="/demo/UEditor/ueditor.config.js" type="text/javascript"></script>
    	<script src="/demo/UEditor/ueditor.all.js" type="text/javascript"></script>
    </head>
    <body>
    	<form id="form1" runat="server">
            <script type="text/plain" id="editor" name="editContent" style="600px; height:300px;"></script>
            <script type="text/javascript">
                var ue = UE.getEditor('editor');
            </script>
        </form>
    </body>
    </html>
    

    4、运行效果

    最后的文件目录:

    页面的运行效果:

    二、集成七牛sdk

    在maven的pom.xml里引用:

    <dependency>
    	<groupId>com.qiniu</groupId>
    	<artifactId>qiniu-java-sdk</artifactId>
    	<version>7.0.8</version>
    </dependency>
    

    三、上传图片到七牛

    1、添加QiniuHelper.cs帮助类

    这是为了接下来方便修改写的一个工具类,使用它可以省一些重复代码

    package org.xs.demo;
    
    import java.io.File;
    import java.util.UUID;
    
    import com.qiniu.common.QiniuException;
    import com.qiniu.http.Response;
    import com.qiniu.storage.UploadManager;
    import com.qiniu.util.Auth;
    
    /**
     * 七牛上传帮助类
     */
    public class QiniuHelper {
    	
        /**
         * 空间名
         */
        private static String Scope = "xxxx";
        
        /**
         * 域名
         */
        private static String Url = "xxxxxxxxx.bkt.clouddn.com";
        
        /**
         * 公钥
         */
        private static String ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        
        private static String SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        
        /**
         * 上传附件
         * @throws QiniuException 
         */
        public static String UploadFile(File file) throws QiniuException {
        	
        	String key = UUID.randomUUID().toString().replaceAll("-", "");
        	
        	try {
    	    	//创建上传对象
    	    	UploadManager uploadManager = new UploadManager();
    	    	
    	    	//密钥配置
    	    	Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    	    	
    	    	//上传文件
    	    	Response res = uploadManager.put(file, key, auth.uploadToken(Scope, key));
        	} catch (Exception e) {
        		return "";
        	}
        	return key;
        }
        
        /**
         * 获得url地址
         */
        public static String GetUrl(String key)
        {
            return String.format ("http://%s/%s", Url, key);
        }
    }
    

    Scope是存储空间的名称

    Url是存储空间的域名(也可以用自己的正式域名)

    ACCESS_KEY和SECRET_KEY是用户的一对密钥,在个人面板 -> 个人中心 -> 密钥管理 界面中可以创建、查看

    这几个参数也可以写成从配置文件读取的

    2、修改StorageManager.java类

    找到com.baidu.ueditor/upload/StorageManager.java类,找到以下代码:

    state = saveTmpFile(tmpFile, path);
    
    if (!state.isSuccess()) {
    	tmpFile.delete();
    }
    

    修改成:

    //state = saveTmpFile(tmpFile, path);
    
    //存储文件到七牛
    String key= QiniuHelper.UploadFile(tmpFile);
    
    state = new BaseState(true);
    state.putInfo("size", tmpFile.length());
    state.putInfo("title", tmpFile.getName());
    state.putInfo("url", QiniuHelper.GetUrl(key));
    
    //if (!state.isSuccess()) {
    	tmpFile.delete();
    //}
    

    3、修改BinaryUploader.java类

    找到com.baidu.ueditor/upload/BinaryUploader.java类,找到以下代码:

    storageState.putInfo("url", PathFormat.format(savePath));
    

    注释掉它

    //storageState.putInfo("url", PathFormat.format(savePath));
    

    4、修改UEditor的配置

    (1)、关闭自动本地保存

    找到UEditorueditor.all.js文件,查找"'contentchange': function () {",在这个函数内增加代码:

    'contentchange': function () {
     
        //关闭自动本地保存
        if (!me.getOpt('enableAutoSave')) {
            return;
        }
    

    这样就不会经常跳出烦人的提示框了

    5、图片上传运行效果

    最后测试一下图片上传是否成功

    单图片上传:

    内容里src已经变成了七牛的地址了

    再看多图片上传:

    7、demo下载

    最新的代码地址:https://github.com/ctxsdhy/cnblogs-example

    四、其他扩展

    这是我的博客里面使用的,设置所有图片尺寸和加入相册功能,其实就是在UEditor里修改几处js,然后增加一个加入相册服务

    方法暂时不整理了,博客的代码在这里:https://github.com/ctxsdhy/xsblog(c#)

  • 相关阅读:
    8.17HTML 标签
    二进制,八进制,十六进制
    keil5之32环境配置
    初遇stm32
    python与opencv的结合之人脸识别值
    01_什么是数据结构以及C语言指针回顾
    07_SSH免登录配置
    06_Linux系统常用命令
    05_Linux网络配置及CRT远程
    04_VMware虚拟机网络配置
  • 原文地址:https://www.cnblogs.com/ctxsdhy/p/5743728.html
Copyright © 2011-2022 走看看