首页 > 编程语言 >java根据一个远程地址将文件下载到本地

java根据一个远程地址将文件下载到本地

时间:2024-12-10 16:43:52浏览次数:10  
标签:java String setRequestProperty urlfile httpUrl 地址 disposition null 远程

private void readFile(String docId, String token, String productResource, String docUrl){
        String url = thirdConfig.getAttachmentUrl() + docId;
        //下载资源
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        URL urlfile = null;
        HttpURLConnection httpUrl = null;
        try {
            urlfile = new URL(url);
            httpUrl = (HttpURLConnection) urlfile.openConnection();
            httpUrl.setRequestProperty("Authorization",token);
            // 设置通用的请求属性
            httpUrl.setRequestProperty("accept", "*/*");
            httpUrl.setRequestProperty("connection", "Keep-Alive");
            httpUrl.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            httpUrl.connect();
            Map<String, List<String>> map = httpUrl.getHeaderFields();
            List<String> disposition = map.get("content-disposition");
            if(disposition == null){
                disposition = map.get("Content-Disposition");
            }
            if(disposition == null || disposition.size() <= 0){
                logger.info("------------disposition is null...");
                httpUrl.disconnect();
                return;
            }
            String filename = disposition.get(0);
            filename = filename.substring(filename.indexOf("=") + 1);
            filename = filename.replaceAll("\"", "");
            String name = java.net.URLDecoder.decode(filename,"UTF-8");
            String path = thirdConfig.getFilePath() + "/" + docId + "/" + name;
            File f = FileUtil.CreateFolderSystemPath(path);
            bis = new BufferedInputStream(httpUrl.getInputStream());
            bos = new BufferedOutputStream(new FileOutputStream(f));
            int len ;
            byte[] b = new byte[2048];
            while ((len = bis.read(b)) != -1) {
                bos.write(b, 0, len);
            }
            bos.flush();
            bos.close();
            bis.close();
            httpUrl.disconnect();
        }catch (Exception e){
            logger.error("--------------- download fail-------------: ");
            logger.error(e.getMessage());

        }finally {
            if (bis != null){
                try {
                    bis.close();
                } catch (IOException e) {
                    logger.error(e.getMessage());
                }
            }

            if (bos != null){
                try {
                    bos.close();
                } catch (IOException e) {
                    logger.error(e.getMessage());
                }
            }

            if(httpUrl != null){
                httpUrl.disconnect();
            }
        }
    }

  

标签:java,String,setRequestProperty,urlfile,httpUrl,地址,disposition,null,远程
From: https://www.cnblogs.com/james-roger/p/18597636

相关文章

  • 基于java的公寓报修管理系统论文
    系统简介现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处......
  • springboot基于java的教学辅助平台论文
    系统简介随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了教学辅助平台的开发全过程。通过分析教学辅助平台管理的不足,创建了一个计算机管理教学辅助平台的方案。文章介绍了教学辅助平台的系统分析部分,包括可行性分析等,系统设......
  • springboot基于java的火车票订票系统的设计与实现论文
    系统简介传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装火车票订票系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,火车票订票系......
  • node.js毕设基于java的五金批发商场业务管理系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于五金批发商场业务管理系统的研究,现有研究主要以传统的管理模式为主,专门针对基于Java开发的五金批发商场业务管理系统的研究较少。在国内外,一些大型......
  • 目前Java后端就业前景到底怎么样?
    很多人都说今年对于IT行业根本没有所谓的“金三银四”“金九银十”。在各大招聘网站或者软件上不管是大厂还是中小公司大多都是挂个招聘需求,实际并不招人;在行业内的程序员基本都已经感受到了任老前段时间口中所谓的“寒气”。虽然事实确实是如此,但你细心观察之后就会发现,圈子......
  • node.js毕设基于java的招聘信息管理系统 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于招聘信息管理系统的研究,现有研究主要以通用性的招聘系统为主,专门针对校园环境下结合企业、学生、教师等多角色的基于Java的招聘信息管理系统的研究......
  • Java实现TCP停等协议(计网实验四设计思路、问题回答、输出捕获)
    设计思路说明该项目实现了TCP协议的一个简单版本(不包括流量控制和)。它使用了由Fishnet提供的链接层API和网络拓扑仿真。实现TCP协议的核心代码在TCPSock.java和TCPManager.java中打印原理Node初始化的时候就会同时初始化一个TCPManage。当一个包到达node后,manage就会调......
  • 17 Java期末考试
    集合框架importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannercin=newScanner(System.in);Set<String>set=newLinkedHashSet<>();//使用LinkedHashSet来去重并保持顺序intn=cin.nextInt()......
  • node.js毕设基于Java的绿色食品产销管理系统设计与开发 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码毕设程序文件开题报告内容一、选题背景关于绿色食品产销管理系统的研究,现有研究主要以绿色食品的生产或销售环节单独研究为主,专门针对将两者结合并且基于Java进行系统设计与开发的研究较少。在国......
  • node.js毕设基于Java的游泳馆会员管理系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于游泳馆会员管理系统的研究,现有研究主要以传统管理方式为主,专门针对基于Java的游泳馆会员管理系统的研究较少。在国内外,虽然游泳馆管理系统已有所发......