当前位置: 首页 > news >正文

农村基本制度建设网站竞价推广外包托管

农村基本制度建设网站,竞价推广外包托管,小程序开发语言,wordpress后台卡目录 1、文件下载的原理2、具体实现2.1 提前准备2.2 服务器端的实现2.3 请求端的实现 3、代码下载4、更多特性4.1 单独压缩文件4.2 解析4.2.1 整体解析4.2.2 单个文件解析 4.3 其他4.3.1 设置压缩级别4.3.2 密码保护4.3.3 进度反馈 5、参考资料 1、文件下载的原理 在实际应用环…

目录

  • 1、文件下载的原理
  • 2、具体实现
    • 2.1 提前准备
    • 2.2 服务器端的实现
    • 2.3 请求端的实现
  • 3、代码下载
  • 4、更多特性
    • 4.1 单独压缩文件
    • 4.2 解析
      • 4.2.1 整体解析
      • 4.2.2 单个文件解析
    • 4.3 其他
      • 4.3.1 设置压缩级别
      • 4.3.2 密码保护
      • 4.3.3 进度反馈
  • 5、参考资料

1、文件下载的原理

在实际应用环境中,文件的下载是一个特别常见的需求。为了传输文件的大小,往往需要对文件进行压缩,因此就涉及到文件的压缩及文件的下载,具体步骤有5步。(1)、请求端发出文件的请求。这个可以根据实际需求,使用get/post及参数,发起一个请求。(2)、服务器收到请求后,会根据需求生成(或者准备)相关文件(最常用的例子就是:患者通过医院App下载处方、门诊记录单、诊断证明书之类)【这一步往往是偏向业务相关】。(3)然后将这些生成的文件,压缩成zip文件格式。(4)、服务端返回数据。(5)、客户端收到数据后,解析Response中的Stream,并使用FileStream将文件存储到本地。
具体的原理如下图所示
文件下载的原理

2、具体实现

2.1 提前准备

我们提前准备了文件(这步主要是模拟实际业务中生成的文件夹及文件)。在fhirs文件夹下有一个index.xml文件和emrfhirs文件夹,并且在emrfhirs文件夹内有001fhir.json002fhir.json003fhir.json三个文件。文档的目录结构如下:
在这里插入图片描述
在这里插入图片描述

2.2 服务器端的实现

创建webapi项目,实现下载文件的方法。具体代码如下

[HttpPost]
public async Task<ActionResult> getCompressionFile()
{try{/** 接收客户端的参数,本示例为了简化,不进行处理IFormCollection form = HttpContext.Request.Form;string? username = form["UserName"];string? password = form["Password"];string? remoteFilePath = form["RemotePath"];**/string source_folder = @"D:\data\fhirs"; //需要压缩的文件的路径,就是刚才上面提到的文件夹及文件string destination_path = @"D:\data\fhirsemr.zip";  //要将上面的文件夹变成的压缩文件// using System.IO.Compression;//将文件进行压缩await Task.Run(() =>{ZipFile.CreateFromDirectory(source_folder, destination_path);});//这个地方涉及一个知识//zip压缩文件,它的content-type是application/x-zip-compressed//rar压缩文件,它的content-type是application/octet-streamvar stream = new FileStream(destination_path, FileMode.Open, FileAccess.Read);return new FileStreamResult(stream, "application/x-zip-compressed"){FileDownloadName = "ermfile"};}catch (Exception ex){throw new Exception(ex.Message);}
}

上面就是服务端的代码

2.3 请求端的实现

客户端的请求端实现如下

//url:服务端的地址
//localFileFullPath:将文件存储到本地的路径
//otherParams:给业务使用的参数
private string GetFile(string url, string localFileFullPath, string otherParams)
{try{Uri uri = new Uri(url);HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);request.Method = "post"; //post、getrequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";request.KeepAlive = true;request.Credentials = CredentialCache.DefaultCredentials;using (Stream requestStream = request.GetRequestStream()){byte[] formDataBytes = Encoding.UTF8.GetBytes(otherParams);requestStream.Write(formDataBytes, 0, formDataBytes.Length);}HttpWebResponse response = (HttpWebResponse)request.GetResponse();//判断路径,并创建路径string path = Path.GetDirectoryName(localFileFullPath);if (!Directory.Exists(path) && !string.IsNullOrEmpty(path)){Directory.CreateDirectory(path);}//将文件using (FileStream fs = new FileStream(localFileFullPath, FileMode.Create, FileAccess.Write, FileShare.None)){using (Stream responseStream = response.GetResponseStream()){//创建本地文件写入流byte[] bArr = new byte[1024];int iTotalSize = 0;int size = responseStream.Read(bArr, 0, bArr.Length);while (size > 0){iTotalSize += size;fs.Write(bArr, 0, size);size = responseStream.Read(bArr, 0, bArr.Length);}}}return "Success-获取文件成功";}catch (Exception ex){return "Error-"+ex.Message;}
}

3、代码下载

代码比较简单,无代码

4、更多特性

4.1 单独压缩文件

如果你只想压缩特定的文件,而不是整个文件夹,你可以使用FileStream和ZipArchive来实现。实际上就是NET中的文件操作

using System.IO;
using System.IO.Compression;string startPath = @"c:\example\file.txt"; // 要压缩的文件路径
string zipPath = @"c:\example\result.zip"; // 压缩后的ZIP文件路径using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Create))
{using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create)){ZipArchiveEntry readmeEntry = archive.CreateEntry("file.txt");using (StreamWriter writer = new StreamWriter(readmeEntry.Open())){using (StreamReader reader = new StreamReader(startPath)){string content = reader.ReadToEnd();writer.Write(content);}}}
}

4.2 解析

4.2.1 整体解析

解压文件同样简单。我们可以使用ZipFile类的ExtractToDirectory方法来解压ZIP文件到指定文件夹:

using System.IO.Compression;string zipPath = @"c:\example\start.zip"; // 要解压的ZIP文件路径
string extractPath = @"c:\example\extract"; // 解压后的文件夹路径ZipFile.ExtractToDirectory(zipPath, extractPath);

这段代码会将start.zip文件解压到extract文件夹中。

4.2.2 单个文件解析

如果你需要更细粒度的控制,比如只解压ZIP文件中的特定文件,你可以使用ZipArchive来实现:

using System.IO;
using System.IO.Compression;string zipPath = @"c:\example\start.zip"; // 要解压的ZIP文件路径
string extractPath = @"c:\example\extract"; // 解压后的文件夹路径
string fileToExtract = "file.txt"; // 要解压的文件名using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{ZipArchiveEntry entry = archive.GetEntry(fileToExtract);if (entry != null){string fullPath = Path.Combine(extractPath, entry.FullName);entry.ExtractToFile(fullPath, overwrite: true);}
}

这段代码会从start.zip文件中解压出file.txt文件到extract文件夹中

4.3 其他

4.3.1 设置压缩级别

在压缩文件时,你可以指定压缩级别来优化压缩效果。ZipArchiveMode.Create方法接受一个CompressionLevel枚举参数,允许你选择不同的压缩级别:

using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Create))
{using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create, true)){// ... 添加文件到ZIP归档中}
}

在这个例子中,第三个参数是布尔值,表示是否压缩归档中的条目。你也可以通过ZipArchiveEntry.CompressionLevel属性为单个条目设置压缩级别。

4.3.2 密码保护

.NETSystem.IO.Compression命名空间不支持为ZIP文件添加密码保护。如果你需要这个功能,你可能需要使用第三方库,如DotNetZip

4.3.3 进度反馈

在压缩或解压大文件时,提供进度反馈是一个很好的用户体验。然而,System.IO.Compression命名空间并没有直接提供进度反馈的机制。你可以通过计算处理的文件大小与总大小来估算进度,并使用例如IProgress<T>接口来报告进度。

5、参考资料

这篇文章主要参考了这篇文章:NET环境下使用原生方法实现文件压缩与解压

http://www.hkea.cn/news/408582/

相关文章:

  • 创建网站开发公司互联网推广引流是做什么的
  • 万盛集团网站建设seo网站推广全程实例
  • 做教育的网站需要资质吗网站怎么开发
  • 微网站怎么做滚动中国万网域名注册官网
  • 个人如何免费建网站seo在线优化工具 si
  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化
  • 网站建设收费标准策划百度推广关键词越多越好吗
  • 网站怎么做更新吗如何建立网页
  • 国外建设工程招聘信息网站tool站长工具
  • 专业做相册书的网站电商网站建设制作
  • 银川网站开发公司电话东莞网
  • 环境保护局网站管理制度建设百度指数的主要功能有
  • 安装wordpress提示500错误关键词优化的策略有哪些
  • 企业网站建设公司排名深圳高端seo公司助力企业
  • 做网站套餐网站seo
  • 网站上的代码网页怎么做的下载百度软件
  • 网站功能模块建设搜狗推广
  • 网站做推广有用吗网站页面设计
  • 做简报的网站广州搜发网络科技有限公司
  • 南乐县住房和城乡建设局网站制作网站的步骤是什么
  • 金华做网站最专业的公司搜易网提供的技术服务
  • wordpress适合门户网站吗怎么营销自己的产品
  • 常用的网站类型有哪些seo优化专员编辑
  • 网站专题框架怎么做海阳seo排名
  • 手机网站代码下载黄页网站推广服务
  • 做网站前端多少钱在线bt种子
  • wordpress+模版+推荐专业网站seo推广