前端图片裁剪并上传到七牛云kodo

2024-06-13 18:48

本文主要是介绍前端图片裁剪并上传到七牛云kodo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近项目中用到七牛云图片上传,特别记录。

我的七牛云kodo存储区域是“华南”,demo示例均为华南,为了跑demo避免问题,建议使用华南区。

一 .服务端代码(java)

(1)导入maven

<dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.29</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>3.3.1</version><scope>compile</scope></dependency>

(2)获取签名代码

package com.durian.amanager.controllers.upload;import java.util.UUID;import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.durian.common.tool.ConfigUtils;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;@Controller
@Scope("prototype")
@RequestMapping("/qiniu")
public class QiniuUploadController {/** 简单方式解决中文乱码问题,通常不采用*/
//	@RequestMapping(value = "/login2",produces = "application/json;charset=utf-8";)@RequestMapping(value = "/imageUptoken")@ResponseBodypublic QiNiu imageUptoken() {String bucket = ConfigUtils.getString("qiniu.image.bucket", "", "qiniu");return getUptoken(bucket);}@RequestMapping(value = "/attachmentUptoken")@ResponseBodypublic QiNiu attachmentUptoken() {String bucket = ConfigUtils.getString("qiniu.attachment.bucket", "", "qiniu");return getUptoken(bucket);}private QiNiu getUptoken(String bucket) {QiNiu qiNiu = new QiNiu();String accessKey = ConfigUtils.getString("qiniu.accessKey", "", "qiniu");String secretKey = ConfigUtils.getString("qiniu.secretKey", "", "qiniu");long expireSeconds = ConfigUtils.getString("qiniu.expireSeconds", 600L, "qiniu"); // 过期时间StringMap putPolicy = new StringMap();Auth auth = Auth.create(accessKey, secretKey);String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);qiNiu.setKey(UUID.randomUUID().toString().replaceAll("\\-", ""));qiNiu.setUptoken(upToken);return qiNiu;}
}class QiNiu {private String uptoken;private String key;public String getUptoken() {return uptoken;}public void setUptoken(String uptoken) {this.uptoken = uptoken;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}
}
package com.durian.common.tool;import java.util.ResourceBundle;import org.apache.commons.lang3.StringUtils;/*** 从指定文件取值* * @author leng**/
public class ConfigUtils {/*** 从指定文件取值* * @param key* @param defaultValue* @param configName* @return*/public static String getString(String key, String defaultValue, String configName) {try {ResourceBundle rb2 = ResourceBundle.getBundle(configName);String str = rb2.getString(key).trim();if (StringUtils.isNotEmpty(str)) {return str;}} catch (Exception e) {// TODO: handle exception}return defaultValue;}/*** 从指定文件取值* * @param key* @param defaultValue* @param configName* @return*/public static Long getString(String key, Long defaultValue, String configName) {String str = getString(key, "", configName);if (StringUtils.isEmpty(str)) {return defaultValue;}return Long.parseLong(str);}
}

 

二.前端代码核心

(1)通过h5的canvas能力生成base64的图片编码

(2)获取签名

(3)将base64编码上传到七牛云(图中圈出的链接和七牛的服务器地域有关系)

这里window.opener.uploadCallback是我的页面回调。

 

前端代码:

链接:https://pan.baidu.com/s/1G6oPNwd8v2dpIcBN0QYtpg 
提取码:mvug 
复制这段内容后打开百度网盘手机App,操作更方便哦。

这篇关于前端图片裁剪并上传到七牛云kodo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1058129

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE