在阿里云oss上批量下载文件

@RequestMapping(value="/ossDown",method=RequestMethod.POST)
    public void ossDown(HttpServletRequest request) {
        
        
        List<SpartaSubmitSubject> listS=ossService.queryOss();
        String [] str=new String[listS.size()];
        for(int x=0;x<listS.size();x++) {
            String value=listS.get(x).getStudentId()+"_"+listS.get(x).getPaperId()+"_"+listS.get(x).getSubjectId()+"_manage.db";
            str[x]=value;
        }
        
    
        String endpoint="oss-cn-beijing.aliyuncs.com";
        String accessKeyId = "xxx";
        String accessKeySecret = "xxx";
        String bucketName = "xxx";
        
        
        String key1="20180914/formal/answer";
        String key="";
        for(int x=0;x<listS.size();x++) {
            key=key1+"/"+str[x];   // 路径加数据库查询出来出来对应的名字,
            
            downDir = LogUtil.getDownloadPath(request);//得到的servlet容器跟目录
            String dowDirFile = downDir+"/" +"ossDownload";
            File dowFile = new File(dowDirFile);
            if(!dowFile.exists()){
                dowFile.mkdirs();
            }  
            String localUrl=dowDirFile+"/"+str[x];//下载后保存本地路径(

          重点########:加上需要存的名字
            
    
            OSSClient client = null;
            try {
                client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
                if(client.doesObjectExist(bucketName, key)){//如果文件存在在下载
                
                    long startTime_d = System.currentTimeMillis();  
                    download(client, bucketName, key, localUrl);
                    long endTime_d = System.currentTimeMillis();
                    System.out.println("下载花费时间约:" + (endTime_d - startTime_d) + " ms");  
                    
                }else{
                    System.out.println(key+"下载失败不存在");
                    
                }
            } catch (Throwable e) {
                System.out.println("cuowu");
                e.printStackTrace();
                
            } finally{
                System.out.println("fina");
                if(null != client) {
                    client.shutdown();
                }
            }
        }
        
    }
        
    
           // 下载文件  具体方法
        private static void download(OSSClient client, String bucketName,  
                String key, String filename) throws Throwable {  
            try {
                client.getObject(new GetObjectRequest(bucketName, key), new File(filename));
                
            } finally {
                if (client != null) {
                    client.shutdown();
                }
            }  
        
        
        
    }

    

public static String getDownloadPath(HttpServletRequest request) {
        String rootDir = request.getSession().getServletContext().getRealPath("/");
        System.out.println(rootDir);
        String separator=System.getProperty("file.separator");
          
        File folder = new File(rootDir+separator+"20180915dbForDownLoad");
        if(!folder.exists() && !folder.isDirectory()){
            folder.mkdirs();
        }  
        
        String downDir = folder.getAbsolutePath();
        return downDir;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
阿里云OSS下载文件的步骤如下: 首先,需要引入阿里云的依赖包,例如在Maven项目中可以添加以下依赖: ```xml <!--阿里云oss --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> ``` \[1\] 其次,在Controller中编写相应的方法来处理下载请求。例如: ```java // 相应的Controller @RequestMapping(value = "/download", method = RequestMethod.GET) public void downloadSource(HttpServletResponse response) { // oss服务器上相应的文件名 // 文件名必须正确,否则会报错 List<String> fileName = new ArrayList<>(); fileName.add("文件1.doc"); fileName.add("文件2.doc"); // 生成压缩包的文件名 String zipFileName = "test"; // 调用AliYunOssUtils的方法进行批量下载 AliYunOssUtils.batchDownLoadOssFile(fileName, zipFileName, response); } ``` \[2\] 最后,根据文件的URL链接获取OSS文件链接,并读取输入流进行下载。例如: ```java // 截取片段代码 URL url = new URL(urllink); // 打开到此URL的连接并返回一个用于从该连接读入的InputStream。 InputStream in = url.openStream(); String gaokuai_url = HttpUpload.uploadOSS(in, fileName); // 如果获取到了文件链接 if (!gaokuai_url.equals("")) { if (sb.length() > 0) { sb.append(tag + gaokuai_url); } else { sb.append(gaokuai_url); } } ``` \[3\] 以上是从阿里云OSS下载文件的步骤。您可以根据具体的需求和代码框架进行相应的调整和实现。 #### 引用[.reference_title] - *1* [Java调用阿里云oss下载文件](https://blog.csdn.net/Biexiansheng/article/details/121047471)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [从阿里云OSS下载文件的总结](https://blog.csdn.net/qq_38749759/article/details/107863291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [阿里云OSS文件下载功能简易实现](https://blog.csdn.net/loongshawn/article/details/69396768)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端从入门到精通

你的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值