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

           [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();
        }
    

 

posted on 2022-12-05 18:23  学无止境_上海  阅读(860)  评论(0编辑  收藏  举报

导航