从阿里云上下载文件

@RequestMapping(value = "downloadDatumInfo", method = {RequestMethod.POST})
public void downloadDatumInfo(@RequestParam(value="parmData") String parmData,HttpServletRequest request, HttpServletResponse response) throws IOException{
    Map<String, Object> map = CommonUtil.jsonToObject(parmData);
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    String fileName = (String) map.get("fileName");
    String filePath = (String) map.get("filePath");
    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"utf-8"));
    String companyCode = filePath.substring(42, 45);
    String diskName = "yunsuo"+companyCode+"/";
    String key = filePath.substring(filePath.lastIndexOf("/")+1,filePath.length());
    OSSClient ossClient = new OSSClient(aliyunOssConfig.getEndPoint(), aliyunOssConfig.getAccessKeyId(), aliyunOssConfig.getAccessKeySecret());
    InputStream in = OSSUnit.getOSS2InputStream(ossClient, "yunsuo", diskName, key);        
    byte[] buff = new byte[1024];
    BufferedInputStream bis = null;
    OutputStream os = null;
    try {
        os = response.getOutputStream();
        bis =new BufferedInputStream(in);
        int len = 0;
        while ((len = in.read(buff)) != -1) {
            os.write(buff, 0, len);
        }
        os.flush();
        os.close();
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }   
}

/**
* 根据key获取OSS服务器上的文件输入流
*
* @param client
* OSS客户端
* @param bucketName
* bucket名称
* @param diskName
* 文件路径
* @param key
* Bucket下的文件的路径名+文件名
*/
public static InputStream getOSS2InputStream(OSSClient client, String bucketName, String diskName, String key) {
OSSObject ossObj = client.getObject(bucketName, diskName + key);
return ossObj.getObjectContent();
}

重磅,史上最全的阿里云分享的云原生技术学习资料合集,共120份。 一、阿里云开源书合集 2020微服务领域开源数字化报告 阿里巴巴云原生技术与实践13讲 阿里巴巴云原生实践15讲 不一样的双11技术:阿里巴巴经济体云原生实践 深入浅出Kubernetes 云原生架构白皮书 Knative云原生应用开发指南 二、思维图合集 分布式系统大图 分布式系统知识体系大图 架构图思考路径 Go指南大图 三、大咖演讲 阿里巴巴 DevOps 的三架马车:基础设施、运维编排、监控 阿里巴巴 K8s 超大规模实践经验 阿里巴巴 Kubernetes 应用管理实践中的经验与教训 阿里巴巴超大规模神龙裸金属 Kubernetes 集群运维实践 阿里巴巴核心应用落地 Service Mesh 的挑战与机遇 阿里巴巴云原生开源探索与实践司徒放(姬风) 阿里云文件存储:K8s 云原生场景下的共享高性能存储 安全容器的发展与思考 拐点已至, 云原生引领数字化转型升级 拐点已至,云原生引领数字化转型升级易立 函数计算在 双11 小程序场景中的应用 基于 K8s 扩展机制实现 PaaS 平台云原生演进 金融级云原生 PaaS 探索与实践 客如云容器化改造经验 蚂蚁金服双十一 Service Mesh 超大规模落地揭秘 全民双十一:基于容器服务的大促备战 容器混合云趋势与展望 容器上云的攻与守 三维家的 Paas 平台建设与微服务架构 深入 Kubernetes 的“无人区”-蚂蚁金服双十一的调度系统 使用 Kubernetes 运行 MXNet 和 AutoTVM 谐云科技阿里云联合新品解读 云原生应用分发协同实践 Distributed Database on Cloud Edge Kubernetes - 构建边缘云计算基础设施 Improving Resource Efficiency in Kubernetes Clusters Kata Containers 云原生服务的一块坚定基石 OpenKruise — 助力阿里巴巴集团落地 Kubernetes的核心开源技术 OpenKruise — 自动化部署 Kubernetes 应用的新方法 Serverless 弹性容器实例:设计、实现和性能优化 Serverless autoscaling in kubernetes Serverless Deep Learning Inference Service Mesh 在『路口』的产品思考与实践 TiDB Operator 实现原理解析 四、架构师成长系列直播 10分钟高质量完成应用容器化迁移 从 2019 到 2020,Apache Dubbo 年度总结与展望 从代码到部署,云原生应用 DevSecOps 实践 攻克痛点:如何保证复杂微服务架构下的数据一致性 构建安全可靠的微服务 Nacos 在颜铺 SaaS 平台的应用实践 函数计算最佳实践:搭建基于 Serverless 的在线转换工具 函数计算最佳实践:基于函数计算实现 Serverless 自动化运维 函数计算最佳实践:快速开发一个分布式 Puppeteer 网页截图服务 函数计算最佳实践:如何轻松构建弹性高可用的音视频处理系统? 基于 DLedger 构建高可用的 Apache RocketMQ 集群 基于 RocketMQ + Knative 驱动云原生 Serverless 应用 基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 快速交付云原生应用的 3 种发布策略详解 流量太大容易挂?接入 Sentinel 让 N 个 9 成为可能! 容器化应用痛点剖析:问题诊断、监控及运维 如何借助 Serverless 技术降低闲置计算资源成本 十分钟上线-使用函数计算构建支付宝小程序服务 为什么 RocketMQ 是业务消息的首选 消息队列 Kafka 版差异化特性 云原生时代的在线教育 DevOps 之道 中小企业如何实现在家研发软件 Apache RocketMQ 未来展望 Arthas 在线应用诊断实践 Dubbo 2.7.6 新特性 GitOps之应用安全发布模型实践 Nacos 全新权限控制系统介绍 OAM:云原生时代的应用模型与下一代 DevOps 技术 RocketMQ 新特性揭秘-Request-Reply 模式 RocketMQ Connect 平台的搭建与实践 RocketMQ Go 客户端实践 RocketMQ Operator-K8s 平台自动化部署工具 Serverless 工作流适用场景及最佳实践 Serverless 开发实战--十分钟上线一个 Web 应用 Service Mesh 实践及落地风险控制
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值