图片服务器 java代码_使用七牛云做图片服务器(Java代码)

首先得去七牛云注册账号,然后去控制台创建存储空间

b57d331fc749?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

6.png

这里申请的是测试域名,所以只有30天的有效期,到期了图片就会被清除。所以只是供我们玩一下,真正的开发得用自己的域名。

接下来就是申请AK和SK,在个人中心

b57d331fc749?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

7.png

做好了这些准备,那么就可以开始写代码了。

我这里使用的是SpringBoot,这样可以省去很多配置,在这个项目中,几乎是零配置。

图片上传,这里需要两个jar包

com.alibaba

fastjson

1.2.31

com.qiniu

qiniu-java-sdk

7.2.7

接下来就开始撸代码了。

首先创建一个html页面

Insert title here

上传

最简单原始。但这里还是有两个注意的地方,一个是method属性,一个是enctype属性。

接下来就是FileUtil.java

public class FileUtil {

// 图片允许的后缀扩展名

public static String[] IMAGE_FILE_EXTD = new String[] { "png", "bmp", "jpg", "jpeg","pdf" };

public static boolean isFileAllowed(String fileName) {

for (String ext : IMAGE_FILE_EXTD) {

if (ext.equals(fileName)) {

return true;

}

}

return false;

}

}

这个类只有一个简单的方法,那就是判断图片的后缀是否符合要求。

接下来写QiniuService.java

@Service

public class QiniuService {

private static final Logger logger = LoggerFactory.getLogger(QiniuService.class);

// 设置好账号的ACCESS_KEY和SECRET_KEY

String ACCESS_KEY = "###################";

String SECRET_KEY = "###################";

// 要上传的空间

String bucketname = "####";

// 密钥配置

Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

// 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone

Configuration cfg = new Configuration(Zone.zone0());

// ...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);

// 测试域名,只有30天有效期

private static String QINIU_IMAGE_DOMAIN = "http://############/";

// 简单上传,使用默认策略,只需要设置上传的空间名就可以了

public String getUpToken() {

return auth.uploadToken(bucketname);

}

public String saveImage(MultipartFile file) throws IOException {

try {

int dotPos = file.getOriginalFilename().lastIndexOf(".");

if (dotPos < 0) {

return null;

}

String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();

// 判断是否是合法的文件后缀

if (!FileUtil.isFileAllowed(fileExt)) {

return null;

}

String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;

// 调用put方法上传

Response res = uploadManager.put(file.getBytes(), fileName, getUpToken());

// 打印返回的信息

if (res.isOK() && res.isJson()) {

// 返回这张存储照片的地址

return QINIU_IMAGE_DOMAIN + JSONObject.parseObject(res.bodyString()).get("key");

} else {

logger.error("七牛异常:" + res.bodyString());

return null;

}

} catch (QiniuException e) {

// 请求失败时打印的异常的信息

logger.error("七牛异常:" + e.getMessage());

return null;

}

}

}

这里需要填的地方我都用#########标注了,要注意的是Zone.zone0()这个方法,因为你创建的存储空间可能是华北的,华东的或者其他区域的,所以这里可能得调用zone1或者zone2。具体视情况而定。

最后当然就是controller了。

@Controller

public class TestController {

@Autowired

private QiniuService qiniuService;

@RequestMapping(value = "/testUpload", method = RequestMethod.POST)

@ResponseBody

public String uploadImage(@RequestParam("file") MultipartFile file,HttpServletRequest request) {

if(file.isEmpty()) {

return "error";

}

try {

String fileUrl=qiniuService.saveImage(file);

return "success, imageUrl = " + fileUrl;

} catch (IOException e) {

e.printStackTrace();

}

return "fail";

}

}

上传成功,则返回图片的地址。

启动SpringBoot项目,输入地址

b57d331fc749?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

9.png

选择一张图片点击上传,发现返回success和图片的url。

b57d331fc749?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8.png

去七牛云存储空间看内容管理,发现图片已经上传到了七牛云。

b57d331fc749?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

10.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值