本文由黑壳网原创
本文来源mybaits 分页插件 pageHelper5.0.2~黑壳网
壳叔搞笑一刻
没有对手
警官抓到正在赌博的四个人。“你们知道这是犯法的吗?”警官向第一个人怒吼道。
“不,我只是在这里看看。”
警官又问第二个人:“你呢?”
“我是在等候巴士而已。
第三个也插嘴:“警官,我是在这里等我的女朋友。”
警官看了看第四个人,他拿着牌。于是责问他说:“你手中有物证,大概不能抵赖吧?”
他睨视着警官,回答说:“那么我是跟谁赌博呢?你说说看!”
今天要说的是七牛云介绍
今天主要就是在通过Java Web的方式上传图片并且获得图片路径。
先看一下界面,有点简短,请各位将就一下吧。
这是上传页面,没错就是两个按钮。
你以为点击完,会出现Duang Duang Duang的效果吗,想多了,只有更剪短的一行img标签显示
虽说界面过于清爽,但是功能是实打实的可以!
接下来开始抛代码!
单独jar qiniuJar.tar - 城通网盘
maven 引入jar包
eu.bitwalker
UserAgentUtils
1.20
com.qiniu
sdk
6.1.0
com.squareup.okhttp3
okhttp
3.3.1
compile
com.google.code.gson
gson
2.6.2
compile
html 界面
七牛云服务示例
Controller类
import com.QiniuCommon.utils.CommonUtil;
import com.QiniuCommon.utils.ExecuteResult;
import com.QiniuCommon.utils.QiniuUtil;
import com.qiniu.api.auth.AuthException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
/**
* Created by kzyuan on 2017/6/20.
*/
@Controller
@RequestMapping(value = "")
public class QiniuController {
private static Logger logger = LoggerFactory.getLogger(QiniuController.class);
@RequestMapping("qiniuCommon")
private String qiniuCommon(HttpServletRequest request){
return "qiniuCommon";
}
/**
* @param request
* @param multipartFile
* @return
*/
@RequestMapping(value = "/qiniuUpload", method = RequestMethod.POST)
@ResponseBody
public String qiniuUpload(HttpServletRequest request, HttpServletResponse response, @RequestParam("imagefile") MultipartFile multipartFile) {
ExecuteResult executeResult = new ExecuteResult();
QiniuUtil qiniuUtil = new QiniuUtil();
CommonUtil commonUtil = new CommonUtil();
try {
/**
* 上传文件扩展名
*/
String filenameExtension = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."), multipartFile.getOriginalFilename().length());
/**
* MultipartFile 转 file 类型
*/
File file = commonUtil.multipartToFile(multipartFile);
/**
* 七牛云文件上传 服务 file文件 以及 文件扩展名
*/
executeResult = qiniuUtil.uploadFile(file, filenameExtension);
if (!executeResult.isSuccess()) {
return "失败" + executeResult.getErrorMessages();
}
} catch (AuthException e) {
logger.error("AuthException", e);
}
return executeResult.getResult();
}
}
common.properties 配置文件
#一些公共的配置
#七牛云存储空间名
bucketName=
#七牛云绑定域名
domain=
#七牛云服务配置项 账号的ACCESS_KEY和SECRET_KEY
ACCESS_KEY=
SECRET_KEY=
这是综合各种例子,最后总结出的一个比较完全的工具类
import com.qiniu.api.auth.AuthException;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.io.IoApi;
import com.qiniu.api.io.PutExtra;
import com.qiniu.api.io.PutRet;
import com.qiniu.api.rs.GetPolicy;
import com.qiniu.api.rs.PutPolicy;
import com.qiniu.api.rs.RSClient;
import com.qiniu.api.rs.URLUtils;
import org.json.JSONException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* 七牛云 手写工具类
* Created by kzyuan on 2017/6/20.
*/
public class QiniuUtil {
private static Logger logger = LoggerFactory.getLogger(QiniuUtil.class);
PropertyUtil propertyUtil = new PropertyUtil();
private String bucketName = propertyUtil.getProperty("bucketName");
private String domain = propertyUtil.getProperty("domain");
private String ACCESS_KEY = propertyUtil.getProperty("ACCESS_KEY");
private String SECRET_KEY = propertyUtil.getProperty("SECRET_KEY");
//通过文件路径上传文件
public ExecuteResult uploadFile(String localFile) throws AuthException, JSONException {
File file = new File(localFile);
/**
* 文件后缀名 文件扩展名
*/
String filenameExtension = localFile.substring(localFile.lastIndexOf("."), localFile.length());
return uploadFile(file, filenameExtension);
}
//通过File上传
public ExecuteResult uploadFile(File file, String filenameExtension) throws AuthException, JSONException {
ExecuteResult executeResult = new ExecuteResult();
String uptoken = getUpToken();
// 可选的上传选项,具体说明请参见使用手册。
PutExtra extra = new PutExtra();
SimpleDateFormat time = new SimpleDateFormat("yyyy/MM/dd");
// 上传文件
PutRet ret = IoApi.putFile(uptoken, time.format(new Date()) + "/" + UUID.randomUUID() + filenameExtension, file.getAbsolutePath(), extra);
if (ret.ok()) {
executeResult.setSuccessMessage("上传成功!");
executeResult.setResult(domain+ret.getKey());
} else {
executeResult.addErrorMessage("上传失败");
}
return executeResult;
}
/**
* 从 inputstream 中写入七牛
*
* @param key 文件名
* @param content 要写入的内容
* @return
* @throws AuthException
* @throws JSONException
*/
public boolean uploadFile(String key, String content) throws AuthException, JSONException {
// 读取的时候按的二进制,所以这里要同一
ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes());
String uptoken = getUpToken();
// 可选的上传选项,具体说明请参见使用手册。
PutExtra extra = new PutExtra();
// 上传文件
PutRet ret = IoApi.Put(uptoken, key, inputStream, extra);
if (ret.ok()) {
return true;
} else {
return false;
}
}
//获得下载地址
public String getDownloadFileUrl(String filename) throws Exception {
Mac mac = getMac();
String baseUrl = URLUtils.makeBaseUrl(domain, filename);
GetPolicy getPolicy = new GetPolicy();
String downloadUrl = getPolicy.makeRequest(baseUrl, mac);
return downloadUrl;
}
//删除文件
public void deleteFile(String filename) {
Mac mac = getMac();
RSClient client = new RSClient(mac);
client.delete(domain, filename);
}
//获取凭证
private String getUpToken() throws AuthException, JSONException {
Mac mac = getMac();
PutPolicy putPolicy = new PutPolicy(bucketName);
String uptoken = putPolicy.token(mac);
return uptoken;
}
private Mac getMac() {
Mac mac = new Mac(ACCESS_KEY, SECRET_KEY);
return mac;
}
}
这个工具类注释说的很清楚,其实就是将MultipartFile 转换成File的一个过程
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
import java.io.IOException;
/**
* 公共工具类
* Created by kzyuan on 2017/6/19.
*/
public class CommonUtil {
/**
* MultipartFile 转换成File
*
* @param multfile 原文件类型
* @return File
* @throws IOException
*/
public File multipartToFile(MultipartFile multfile) {
CommonsMultipartFile cf = (CommonsMultipartFile)multfile;
//这个myfile是MultipartFile的
DiskFileItem fi = (DiskFileItem) cf.getFileItem();
File file = fi.getStoreLocation();
return file;
}
}
如果以上你觉得还是有点迷糊,那么GitHub代码 是你的首选。