七牛云使用笔记

1创建七牛云(申请账号,实名认证,然后创建对象存储)

网站:https://www.qiniu.com/

 

2个人中心(获取秘钥)

 

3操作数据(内容管理)

 

我的文件存储格式为:

 

文档:https://developer.qiniu.com/kodo/sdk/1239/java#1

 

自己写一个七牛云工具类

import com.qiniu.cdn.CdnManager;

import com.qiniu.cdn.CdnResult;

import com.qiniu.common.QiniuException;

import com.qiniu.http.Response;

import com.qiniu.storage.BucketManager;

import com.qiniu.storage.Configuration;

import com.qiniu.storage.Region;

import com.qiniu.storage.UploadManager;

import com.qiniu.storage.model.BatchStatus;

import com.qiniu.storage.model.FileInfo;

import com.qiniu.storage.model.FileListing;

import com.qiniu.util.Auth;

import org.springframework.web.multipart.MultipartFile;



import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;



public class qiniuAPI {

    //秘钥数据

    private String accessKey="**************";

    private String secretKey="**************";

    private Configuration conf=new Configuration(Region.region0());//华东地区代号是region0,华南是region2

    private Auth auth=Auth.create(accessKey,secretKey);

    //存储空间名

    private String bucket="lpf-project";

    //通过秘钥和地区获取存储空间

    private BucketManager bucketManager = new BucketManager(auth, conf);

    //token

    private String token = auth.uploadToken("lpf-project");//指定存储的空间名的token,方便上传



    private String[] domain;//获取域名集合



    public qiniuAPI() throws QiniuException {

        this.domain=bucketManager.domainList(bucket);

    }



    /*

    * files存进去的文件集合,从前端获取

    * dir 存放的路径前缀

    * */

    public void addResources(MultipartFile[] files,String dir) throws IOException {

        if (files != null && files.length>0)

        {

            UploadManager upm=new UploadManager(this.conf);

            for (MultipartFile item : files) {//遍历文件

                //MultipartFile转file

                if(item.getOriginalFilename().equals("") || item.getOriginalFilename()==null) continue;//文件合法检测

                File file=File.createTempFile(item.getOriginalFilename(),null);//创建一个临时file文件,用于转存MultipartFile

                item.transferTo(file);//转存为file

                String filename=dir+item.getOriginalFilename();

                System.out.println(filename+"开始上传");

                upm.put(file,filename,this.token);//上传方法(文件,文件名,token)

            }

        }

    }



    /*文件更新

     * prefix更新文件的前缀

     * 删除原来的文件

     * 插入新的文件

     * */

    public int updateResources(MultipartFile[] files,String prefix) throws IOException {

        int flag=0;

        for (MultipartFile item : files) {//遍历文件,检测是否有空文件

            if(item.getOriginalFilename().equals("") || item.getOriginalFilename()==null)

                return 0;

        }

        delResources(prefix);

        addResources(files,prefix);

        return flag;

    }



    /*文件资源url获取

     * prefix  文件名前缀

     * limit 每次迭代的长度限制,最大1000,推荐值 1000

     * delimiter 指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。缺省值为空字符串

     * marker 缺省值为空字符串

     * */

    public List<String> getResourcesUrlList(String prefix,int limit,String marker,String delimiter) throws QiniuException {

        //列举空间文件列表

        FileListing fileListing = bucketManager.listFiles(this.bucket,prefix,marker,limit,delimiter);

        List<String> result=new ArrayList<>();

        for(FileInfo item : fileListing.items)

        {

            String url="http://"+this.domain[0]+"/"+item.key;

            result.add(url);

        }

        return result;

    }



    /*文件预取

     * urls预取文件url集合

     * */

    public void prefetchUrls(String[] urls) throws QiniuException {

        //CDN管理器,用于文件预取,加快读取速度

        CdnManager c = new CdnManager(this.auth);

        //开始文件预取

        CdnResult.PrefetchResult result = c.prefetchUrls(urls);

        System.out.println("文件预取结果:"+result.code);

        return;

    }

    /*文件删除

     * prefix删除文件的前缀

     * */

    public int delResources(String prefix) throws QiniuException {

        //找到文件

        FileListing fileListing = bucketManager.listFiles(this.bucket,prefix,"",1000,"");

        int flag=0;

        if (fileListing.items.length>0 && fileListing.items != null)

        {

            for(FileInfo item : fileListing.items)

            {

                bucketManager.delete(bucket, item.key);

                System.out.println(item.key+"已经删除!");

                flag++;

            }

        }

        return flag;

    }



    public void setAccessKey(String accessKey) {

        this.accessKey = accessKey;

    }



    public void setSecretKey(String secretKey) {

        this.secretKey = secretKey;

    }



    public void setConf(Configuration conf) {

        this.conf = conf;

    }



    public void setAuth(Auth auth) {

        this.auth = auth;

    }



    public void setBucket(String bucket) {

        this.bucket = bucket;

    }



    public void setBucketManager(BucketManager bucketManager) {

        this.bucketManager = bucketManager;

    }



    public void setToken(String token) {

        this.token = token;

    }



    public String getAccessKey() {

        return accessKey;

    }



    public String getSecretKey() {

        return secretKey;

    }



    public Configuration getConf() {

        return conf;

    }



    public Auth getAuth() {

        return auth;

    }



    public String getBucket() {

        return bucket;

    }



    public BucketManager getBucketManager() {

        return bucketManager;

    }



    public String getToken() {

        return token;

    }

}

controller类(为图方便,把dao和server层都写在了controller层,大家千万别模仿)

import com.neu.oneproject.Util.qiniuAPI;
import com.neu.oneproject.dao.ItemDao;
import com.neu.oneproject.entity.item;
import com.qiniu.cdn.CdnManager;
import com.qiniu.cdn.CdnResult;
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.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.storage.model.FileListing;
import com.qiniu.util.Auth;
import javafx.geometry.Pos;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.ServletException;
import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Controller
@RequestMapping("/demo")
public class MainController {
    @Resource
    ItemDao itemDao;

    private qiniuAPI api;

    public MainController() throws QiniuException {
        api=new qiniuAPI();
    }
    @RequestMapping("index")
    public String index (){
        return "index";
    }




    @RequestMapping("item-show/{id}")
    public String item_show (Model model,@PathVariable("id") int id)throws QiniuException {
        model.addAttribute("obj",itemDao.selectById(id));
        List<String> resultList=api.getResourcesUrlList(id+"/",1000,"","");
        String[] urls=resultList.toArray(new String[resultList.size()]);
        api.prefetchUrls(urls);
        model.addAttribute("images",resultList);
        return "item-show";
    }

    @RequestMapping("item-add/{id}")
    public String item_add (Model model,@PathVariable("id") String id)throws QiniuException {
        item i;
        List<String> resultList=null;
        if(id.equals("-1") || id==null)
        {
            i=new item();
        }
        else
        {
            i=itemDao.selectById(Integer.parseInt(id));
            resultList=api.getResourcesUrlList(id+"/",1000,"","");

        }
        model.addAttribute("obj",i);
        model.addAttribute("images",resultList);
        return "item-add";
    }


    @RequestMapping("item-list")
    public String item_list (Model model){
        model.addAttribute("objList",itemDao.selectAll());
        return "item-list";
    }
    @RequestMapping("getHtml/{url}")
    public String getHtml (Model model,@PathVariable("url") String url){
        return url;
    }

    @Resource
    com.neu.oneproject.service.SysUserService SysUserService;



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【毕业设计】基于springboot的仿共享单车后台源码及笔记【源码+SQL脚本】.zip 一个基于springboot的类似于共享单车的后台系统,包括手机号码注册、登陆、定位、骑行轨迹和消息推送等功能 技术栈: SpringBoot SpringMVC Mybatis(基础框架) Mysql springSecurity(权限验证和请求拦截) AES对称加密数据,RSA非对称加密公钥key(对用户信息进行加密) redis缓存token(token作为用户的标识,维护用户的状态,类似于session) redis结合ActiveMQ发送短信验证码和防止恶意短信无限发送 整合云存储,保存头像(七牛云对象存储为例) 整合mongodb获取附近单车以及距离,主要是geoHash算法(重点) 百度云推送的实战-通知开锁 锁车之后的一系列操作(订单、消费、锁车,支付没有做) 骑行轨迹的保存(保存在mongodb中) 其他:logback,lombok,fastjson, 全局异常和高复用状态类封装、 利用mysql主键自增特性实现单车连续编号 学习这个项目的时候,对其思路做了笔记,我这里按照自己的写法,与其略有不同, 但是基本思路都是一样的。 注意: 本机环境是jdk8,tomcat8,mysql5.7.13,windows下,IDE是IntelliJ IDEA, mongodb(mongodb-win32-x86_64-2008plus-v3.2-latest),redis(redis64-3.0.501), activeMq(apache-activemq-5.15.2) api测试工具为Postman,还用了mongodb客户端Robo 3T,redis客户端工具RedisDesktopManage 跑这个代码之前,需要准备好数据库,开启redis、mongodb、activeMQ服务。 需要注册自己的七牛云账号(上传头像)、秒嘀账号(发送短信验证码)、百度云推送账号

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值