1创建七牛云(申请账号,实名认证,然后创建对象存储)
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;
}