博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端JavaScript——七牛云上传图片配置
阅读量:6605 次
发布时间:2019-06-24

本文共 6114 字,大约阅读时间需要 20 分钟。

hot3.png

    使用前端云上传图片API 七牛云的相关配置:

 

 

jsp页面部分:

1.引入js文件

2.初始化组件

    id="qiniupercent"的button按钮,为进度条显示

    id="btn-uploader"的div 和 id="picfiles" 的a标签 为主要初始化上传控件。

3.主要初始化js

/*	页面加载完毕 发起请求获取七牛token	* 之后调用上传组件构造方法[qiniuImg.js]	*/	function getTokenMessage() {		$.ajax({			url: '/main/upToken',			type: 'POST',			data: {},			cache: false,			contentType: false,    //不可缺			processData: false,    //不可缺			dataType : 'json',			success: function (data) {				var obj = data;				uploaderReady(obj.uptoken);			  }			});	}	$(document).ready(function(){		getTokenMessage();	});

4.qiniuImg.js 代码

/** * Created by pan on 17/1/12 0012. *  七牛上传图片JS *  传入token后执行方法 */function uploaderReady(token){    var uploader = Qiniu.uploader({        runtimes: 'html5,flash,html4',        browse_button: 'pickfiles',     //上传按钮的ID        container: 'btn-uploader',      //上传按钮的上级元素ID        drop_element: 'btn-uploader',        max_file_size: '100mb',         //最大文件限制        flash_swf_url: '/static/js/plupload/Moxie.swf',        dragdrop: false,        chunk_size: '4mb',              //分块大小        //uptoken_url: '',              //Ajax请求upToken的Url,**强烈建议设置**(服务端提供)        uptoken: token,                 //若未指定uptoken_url,则必须指定 uptoken ,uptoken由其他程序生成        // save_key: true,              // 默认 false。若在服务端生成uptoken的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理        domain: 'http://ojantumyo.bkt.clouddn.com/',    //自己的七牛云存储空间域名        multi_selection: false,         //是否允许同时选择多文件        filters: {            mime_types: [               //文件类型过滤,这里限制为图片类型                {title: "Image files", extensions: "jpg,jpeg,gif,png"}            ]        },        auto_start: true,        unique_names :true,             //自动生成文件名,如果值为false则保留原文件名上传        init: {            'FilesAdded': function (up, files) {                plupload.each(files, function(file) {                    // 文件添加进队列后,处理相关的事情                });            },            'BeforeUpload': function (up, file) {                // 每个文件上传前,处理相关的事情            },            'UploadProgress': function (up, file) {                //文件上传时,处理相关的事情                /*可能是文件大小                var chunk_size = plupload.parseSize(this.getOption('chunk_size'));                */                //上传进度 class="layui-btn" type="button"                $('#qiniupercent').attr('style','width:'+file.percent+'%');                //console.log(file.percent + "%");            },            'UploadComplete': function () {                //do something            },            'FileUploaded': function (up, file, info) {                //每个文件上传成功后,处理相关的事情                //其中 info 是文件上传成功后,服务端返回的json,形式如                //{                //  "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",                //  "key": "gogopher.jpg"                //}                var domain = up.getOption('domain');                var res = eval('(' + info + ')');                var sourceLink = domain + res.key;//获取上传文件的链接地址                console.log(sourceLink);                //do something            },            'Error': function (up, err, errTip) {                alert(errTip);            },            'Key': function (up, file) {                //当save_key和unique_names设为false时,该方法将被调用                var key = "";                $.ajax({                    url: '/qiniu-token/get-key/',                    type: 'GET',                    async: false,//这里应设置为同步的方式                    success: function (data) {                        var ext = Qiniu.getFileExtension(file.name);                        key = data + '.' + ext;                    },                    cache: false                });                return key;            }        }    });    uploader.start();}

 

后台接口部分

1.controller方法

@RestController@RequestMapping("/main")public class MainController(){        //七牛Token    @RequestMapping("/upToken")    public Map
uptocken(HttpServletRequest request){ Map
resultMap = Maps.newHashMap(); String token = QianNiuUpload.getUpToken(); resultMap.put("uptoken",token); return resultMap; }}

2.七牛工具类

/** * Created by pan on 17/1/5 0005. * 七牛接口上传工具类,直接通过地址读取本地文件 * -这种方式由于会涉及到浏览器保护 */public class QianNiuUpload {        //设置好账号的ACCESS_KEY和SECRET_KEY        public static String ACCESS_KEY = "官网注册后获取到的ak";        public static String SECRET_KEY = "注册后获取到的sk";        //要上传的空间        public static String bucketname = "个人在官网开通的空间名";        //上传到七牛后保存的文件名        public static String key = "my-java.png";        //上传文件的路径        public static String FilePath = "D:\\JAVA\\idea\\uu\\src\\main\\img\\user_head_img\\1483600033410.jpeg";        //密钥配置        public static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);        ///指定上传的Zone的信息//        //第一种方式: 指定具体的要上传的zone        //注:该具体指定的方式和以下自动识别的方式选择其一即可        //要上传的空间(bucket)的存储区域为华东时        // Zone z = Zone.zone0();        //要上传的空间(bucket)的存储区域为华北时        // Zone z = Zone.zone1();        //要上传的空间(bucket)的存储区域为华南时        // Zone z = Zone.zone2();        //第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。        public static Zone z = Zone.autoZone();        public static Configuration c = new Configuration(z);        //创建上传对象        private static UploadManager uploadManager = new UploadManager(c);        //简单上传,使用默认策略,只需要设置上传的空间名就可以了        public static String getUpToken() {            return auth.uploadToken(bucketname);        }        public static void upload() throws IOException {            try {                //调用put方法上传                Response res = uploadManager.put(FilePath, key, getUpToken());                //打印返回的信息                System.out.println(res.bodyString());            } catch (QiniuException e) {                Response r = e.response;                // 请求失败时打印的异常的信息                System.out.println(r.toString());                try {                    //响应的文本信息                    System.out.println(r.bodyString());                } catch (QiniuException e1) {                    //ignore                }            }        }}

 

转载于:https://my.oschina.net/danjuan/blog/834518

你可能感兴趣的文章
Verilog中的VCD(值变转储文件)
查看>>
预览 GitHub 项目里的网页或 Demo
查看>>
我的友情链接
查看>>
Java私塾跟我学系列——JAVA篇 第三章 数组和排序算法
查看>>
微信小程序 - 开发工具界面一览
查看>>
远程连接linux(Ubuntu配置SSH服务)22端口
查看>>
netty与marshalling简单使用
查看>>
优化带来降权得问题九个问题
查看>>
深入了解NTFS for Mac的界面中的五个勾选项 如启用聚关灯搜索
查看>>
ffmpeg遇到inttypes.h找不到
查看>>
mpsl *** 配置
查看>>
Spring data redis pubsub 简单接入
查看>>
IT技术人,不可有傲气,但须有傲骨
查看>>
如何选择适合自己的存储
查看>>
从Exchange 2007升级到Exchange 2010
查看>>
AWS SDK Python
查看>>
局域网通信工具 飞秋
查看>>
等差数列
查看>>
System Center Operation Manager 2012(八)DELL_MD_3200 Monintoring
查看>>
操作系统(四)---MS-DOS微软磁盘操作系统
查看>>