通过七牛云存储实现对本地资源的存储操作

  def upload(request,params){
        //文件保存目录路径
        String savePath = request.getRealPath("/") + "attached/";
        //文件保存目录URL
        //String saveUrl  = request.getContextPath() + "/attached/";     
        //定义允许上传的文件扩展名
        HashMap<String, String> extMap = new HashMap<String, String>();
        extMap.put("image", "gif,jpg,jpeg,png,bmp");
        extMap.put("flash", "swf,flv");
        extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
        extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
        //最大文件大小
        long maxSize = 1000000;
        //检查目录
        File uploadDir = new File(savePath);
        if(!uploadDir.isDirectory()){
//            render(getError("上传目录不存在。"));
        }
        //检查目录写权限
        if(!uploadDir.canWrite()){
//            render(getError("上传目录没有写权限。"));
        }
        String dirName = request.getParameter("dir");
        if (dirName == null) {
            dirName = "image";
        }

        if(!extMap.containsKey(dirName)){
        }

        //创建文件夹
        savePath += dirName + "/";
        //saveUrl += dirName + "/";
        File saveDirFile = new File(savePath);
        if (!saveDirFile.exists()) {
            saveDirFile.mkdirs();
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String ymd = sdf.format(new Date());
        savePath += ymd + "/";
        //saveUrl += ymd + "/";
        File dirFile = new File(savePath);
        if (!dirFile.exists()) {
            dirFile.mkdirs();
        }
        try {
            def f = request.getFile('image')
            if(!f)
                f = request.getFile('imgFile')
            if(!f.empty){
                def fileName=f.getOriginalFilename() //得到文件名称
               // string localpath=f.getAbsolutePath();
               // println localpath
                String fileType = ".jpg";
                if(fileName!=null && fileName!=''){
                    fileType = fileName.substring(fileName.indexOf(".")) //得到文件类型
                }
                SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + fileType;
                def file= new File(savePath, newFileName);
                if(!file.exists()){
                    file.mkdirs()//如果file不存在自动创建
                }
                f.transferTo(file) //上传            
                def key;
                if(!f.isEmpty()){
                    String suffix = f.getOriginalFilename().substring(f.getOriginalFilename().lastIndexOf("."));
                    key =  UUID.randomUUID().toString() + suffix;
                  }
                
                Config.ACCESS_KEY = "BVV63KrFiv1O2tMn4_Og5IW7gWVEWcw2XkJFfUGJ";
                Config.SECRET_KEY = "jvkEGVGfoUegBmmH64slRcNEjVVXtGIDpEvV91pL";
                
                Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
                // 请确保该bucket已经存在
                String bucketName = "domain";
                PutPolicy putPolicy = new PutPolicy(bucketName);
                String uptoken = putPolicy.token(mac);
                PutExtra extra = new PutExtra();
                def localFile= savePath+newFileName;            
                PutRet ret = IoApi.putFile(uptoken, key, localFile, extra);
                if (ret.ok()) {
                    File tempfile=new File(localFile);
                    tempfile.delete();
                    //切换不同七牛账户注意更新url头部,以新的七牛账户httpURL为准
                    String url= "http://7xn3uy.com1.z0.glb.clouddn.com/" + "/" + key;
                    return url;
                } else {
                  return;
                }            
            }
        } catch (Exception e) {
            e.printStackTrace()
            return("")
        }
    }
    

转载于:https://www.cnblogs.com/yu0312chao/p/4881700.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值