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#)

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/ctxsdhy/p/5743728.html
Copyright © 2011-2022 走看看