博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序 - 后台接入七牛云上传图片和视频
阅读量:6329 次
发布时间:2019-06-22

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

  hot3.png

在后台上传资源文件过程中,一般都是上传到自己的远程 Linux 服务器上,如果自己不想搭建自己的静态资服务器,我们可以使用七牛云服务器,在这里我们不讨论七牛云的优劣,只分享讨论它的使用方法即可。

1、注册自己的七牛账号,并且实名认证之后,可以使用它的对象存储功能

进入www.qiniu.com  注册自己的账号

管理控制台 --> 选择对象存储 --> 新建存储空间 --> 填写表单 --> 创建完成

ed4cd6a3555782ccb5dd3e64f7059177890.jpg

2、到自己的个人中心查看 AccessKey/SecretKey 并在后台代码配置这两个参数

568667071888b0782660c4816f925a9dcb5.jpg

3、使用七牛 java 的 sdk

:https://developer.qiniu.com/kodo/sdk/1239/java

com.qiniu
qiniu-java-sdk
7.2.11
compile
com.squareup.okhttp3
okhttp
3.3.1
compile
com.google.code.gson
gson
2.6.2
compile
com.qiniu
happy-dns-java
0.1.4
compile
junit
junit
4.12
test

4、完成以上步骤,那就直接上代码

package com.thinkgem.jeesite.modules.zsgt.utils;import java.io.File;import java.io.IOException;import java.net.URLEncoder;import java.nio.file.Paths;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.web.multipart.MultipartFile;import com.google.gson.Gson;import com.qiniu.common.QiniuException;import com.qiniu.common.Zone;import com.qiniu.http.Response;import com.qiniu.storage.BucketManager;import com.qiniu.storage.Configuration;import com.qiniu.storage.UploadManager;import com.qiniu.storage.model.DefaultPutRet;import com.qiniu.storage.persistent.FileRecorder;import com.qiniu.util.Auth;/** * 七牛云图片上传 *  * @author hp */public class QiniuUpload {	/**	 * 七牛云图片路径	 */	public static final String QINIU_IMG_PATH = "xxx";	// ...生成上传凭证,然后准备上传	private static String accessKey = "xxx";	private static String secretKey = "xxx";	private static String bucket = "xxx";	// 构造一个带指定Zone对象的配置类	private static Configuration cfg = new Configuration(Zone.zone2());	// 上传文件到七牛云	public String upload(File file) {		String fileName = "";		UploadManager uploadManager = new UploadManager(cfg);		// 默认不指定key的情况下,以文件内容的hash值作为文件名		String key = new Date().getTime() + "_" + file.getName();		Auth auth = Auth.create(accessKey, secretKey);		String upToken = auth.uploadToken(bucket);		try {			Response response = uploadManager.put(file, key, upToken);			// 解析上传成功的结果			DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);			fileName = putRet.key;		} catch (QiniuException ex) {			Response r = ex.response;			System.err.println(r.toString());			try {				System.err.println(r.bodyString());			} catch (QiniuException ex2) {				// ignore			}		}		return fileName;	}	// 删除文件	public boolean delete(String hasName) {		boolean deleteType = false;		Auth auth = Auth.create(accessKey, secretKey);		BucketManager bucketManager = new BucketManager(auth, cfg);		try {			bucketManager.delete(bucket, hasName);			deleteType = true;		} catch (QiniuException ex) {			// 如果遇到异常,说明删除失败			System.err.println(ex.code());			System.err.println(ex.response.toString());		}		return deleteType;	}	public static String uploadBlock(File file) {		String fileName = "";		// 默认不指定key的情况下,以文件内容的hash值作为文件名		String key = new Date().getTime() + "_" + file.getName();		Auth auth = Auth.create(accessKey, secretKey);		String upToken = auth.uploadToken(bucket);		String localTempDir = Paths.get(System.getenv("java.io.tmpdir"), bucket).toString();		try {			// 设置断点续传文件进度保存目录			FileRecorder fileRecorder = new FileRecorder(localTempDir);			UploadManager uploadManager = new UploadManager(cfg, fileRecorder);			try {				Response response = uploadManager.put(file, key, upToken);				// 解析上传成功的结果				DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);				fileName = putRet.key;			} catch (QiniuException ex) {				Response r = ex.response;				System.err.println(r.toString());				try {					System.err.println(r.bodyString());				} catch (QiniuException ex2) {					// ignore				}			}		} catch (IOException ex) {			ex.printStackTrace();		}		return fileName;	}		public static String upload(HttpServletRequest request, MultipartFile img){		String path = request.getSession().getServletContext().getRealPath("/file/upload/");// 生成一个目录		File file;		try {			file = FileUtil.getFile(path, img);		} catch (Exception e) {			throw new RuntimeException("上传文件失败");		}		String fileName = QiniuUpload.uploadBlock(file);		return QiniuUpload.QINIU_IMG_PATH + URLEncoder.encode(fileName);// 访问路径	}}

使用你的 AccessKey/SecretKey 然后调用 QiniuUpload.upload(request, Img) 即可实现上传操作,更多上传操作请看,使用七牛封装好的方法会更加简单。

 

水平有限,若有问题请留言交流!

互相学习,共同进步 :) 转载请注明出处谢谢!

转载于:https://my.oschina.net/hp2017/blog/2245465

你可能感兴趣的文章
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>
60 Permutation Sequence
查看>>
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>
awesome go library 库,推荐使用的golang库
查看>>
树形展示形式的论坛
查看>>
jdbcTemplate 调用存储过程。 入参 array 返回 cursor
查看>>
C++中的stack类、QT中的QStack类
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>
关于 Nginx 配置 WebSocket 400 问题
查看>>
Glide和Govendor安装和使用
查看>>
Java全角、半角字符的关系以及转换
查看>>