首页 > 其他分享 >.net core 远程下载文件并保存到对应的服务器

.net core 远程下载文件并保存到对应的服务器

时间:2022-12-05 18:33:41浏览次数:43  
标签:core bArr url item 服务器 new net responseStream size

           [HttpGet,Route("FileDownSave")]
        public async Task<CustomResponse<ResultCode>> FileDownSave()
        {
            CustomResponse < ResultCode > res = new();
            var edi_FileList= _fileFmsService.GetEdiFileList();//获取oss文件信息
            try
            {
                Uri uri = new Uri("https://gc.mcpsystem.com/");
                httpClient.DefaultRequestHeaders.Referrer = uri;
                foreach (var item in edi_FileList)
                {
                    if (!Directory.Exists(item.key4)) // 如果不存在就创建file文件夹
                    {
                        Directory.CreateDirectory(item.key4);
                    }
                    if (!string.IsNullOrWhiteSpace(item.oss_url))
                    {
                        string[] strArry = item.oss_url.Split('/');
                        item.key4 = item.key4 + "/" + strArry[strArry.Length - 1];//保存地址
                    }
                    var bt = await httpClient.GetByteArrayAsync(item.oss_url);
                    Stream responseStream = new MemoryStream(bt);
                    Stream stream = new FileStream(item.key4, FileMode.OpenOrCreate);
                    byte[] bArr = new byte[1024];
                    int size = responseStream.Read(bArr, 0, bArr.Length);
                    while (size > 0)
                    {
                        stream.Write(bArr, 0, size);
                        size = responseStream.Read(bArr, 0, bArr.Length);
                    }
                    stream.Close();
                    responseStream.Close();
                }
                res.Msg = "操作成功";
                res.Code = 200;
            }
            catch (Exception ex)
            {
                LogHelper.LogException<Exception>("下载文件出现异常,异常原因为:" + ex.Message); 
                res.Msg = "下载文件出现异常,异常原因为:" + ex.Message;
                res.Code = 500;
                throw;
            }
            return res;
        }


       //下面的为参考
       private static HttpClient httpClient = null;

        /// <summary>
        /// 下载并保存
        /// </summary>
        /// <param name="url">网络路径</param>
        /// <param name="savePath">保存本地的文件夹</param>
        public static void FileDownSave(string url,string savePath)
        {
            if (!string.IsNullOrWhiteSpace(url))
            {
                string[] strArry = url.Split('/');
                savePath =savePath+"/"+strArry[strArry.Length - 1];
            }
            if (httpClient == null)
            {
                httpClient = new HttpClient();
            }
            var t = httpClient.GetByteArrayAsync(url);
            t.Wait();
            Stream responseStream = new MemoryStream(t.Result);
            Stream stream = new FileStream(savePath, FileMode.Create);
            byte[] bArr = new byte[1024];
            int size = responseStream.Read(bArr, 0, bArr.Length);
            while (size > 0)
            {
                stream.Write(bArr, 0, size);
                size = responseStream.Read(bArr, 0, bArr.Length);
            }
            stream.Close();
            responseStream.Close();
        }
    

 

标签:core,bArr,url,item,服务器,new,net,responseStream,size
From: https://www.cnblogs.com/hmYao/p/16953124.html

相关文章

  • .NET 6 基于IDistributedCache实现Redis与MemoryCache的缓存帮助类
    本文通过IDistributedCache的接口方法,实现Redis与MemoryCache统一帮助类。只需要在配置文件中简单的配置一下,就可以实现Redis与MemoryCache的切换。目录IDistributedCache......
  • netty
    netty同步阻塞(blocking-IO)BIO同步非阻塞(non-blocking-IO)NIO异步非阻塞(asynchronous-n......
  • 关于RSA数据加密协议在.Net中的应用
    加密协议有哪些加密协议分为对称加密和非对称加密。对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。非对称加密,又称公开密钥加密,是加......
  • 1.1初始化配置MYSQL服务器
    /*初始配置服务器,需先根据操作系统下载MicrosoftAccess2010数据库引擎AccessDatabaseEngine_X64.exe(https://www.microsoft.com/zh-cn/download/confirmation.aspx?id......
  • linux 服务器时间同步
    1、安装时间同步命令yum-yinstallntpdate2、设置定时任务crontab-e#每隔一小时,执行一次同步0*/1***ntpdatetime1.aliyun.com3、查看定时任务......
  • net core应用在linux中差异记录
    window平台和linux平台部署应用,运行表现可能会存在差异,遇到就随手记录下,欢迎补充:序号差异解决1发布镜像存在时区问题使用release模式发布,并设置时区2应用......
  • .NET CORE和docker交互
     1、引入nuget包Install-PackageDocker.DotNet    2、示例如下,更加详细命令查看文档 https://github.com/dotnet/Docker.DotNet//创建客......
  • 用NetCore + ReactJS 实现一个前后端分离的网站 (5) 日志 - log4net & AOP切面编程
    用NetCore+ReactJS实现一个前后端分离的网站(5)日志-log4net&AOP切面编程1.前言日志始终是跟踪与调试程序的最佳手段,因为调试难以溯及既往,而日志则能忠实地记......
  • 验证来自微信服务器的消息
    内容来自微信官方文档。接入微信公众平台开发,开发者需要按照如下步骤完成:填写服务器配置验证服务器地址的有效性依据接口文档实现业务逻辑微信官方的文档已经写得很......
  • 实践案例丨CenterNet-Hourglass论文复现
    摘要:本案例是CenterNet-Hourglass论文复现的体验案例,此模型是对ObjectsasPoints中提出的CenterNet进行结果复现。本文分享自华为云社区《CenterNet-Hourglass(物体检......