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

华为网站建设和阿里云哪个好宁波seo网站推广

华为网站建设和阿里云哪个好,宁波seo网站推广,北京注册公司代理机构,网站设计 布局目录 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.json、002fhir.json、003fhir.json三个文件。文档的目录结构如下 2.2 服务器端的实现 创建webapi项目实现下载文件的方法。具体代码如下 [HttpPost] public async TaskActionResult 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;charsetutf-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 密码保护 .NET的System.IO.Compression命名空间不支持为ZIP文件添加密码保护。如果你需要这个功能你可能需要使用第三方库如DotNetZip 4.3.3 进度反馈 在压缩或解压大文件时提供进度反馈是一个很好的用户体验。然而System.IO.Compression命名空间并没有直接提供进度反馈的机制。你可以通过计算处理的文件大小与总大小来估算进度并使用例如IProgressT接口来报告进度。 5、参考资料 这篇文章主要参考了这篇文章NET环境下使用原生方法实现文件压缩与解压
http://www.dnsts.com.cn/news/107800.html

相关文章:

  • 淘宝客 备案 网站名称怎么用wordpress做企业网站
  • wordpress 导购站模板什么网站广告做多
  • 怎么做自己的网站最近国际时事
  • 网站备案 现场提交网站建设联系电话
  • 外贸网站推广 雅虎问答有用吗自学考试 网页制作与网站建设06627
  • c 是用来做网站的吗自己怎么制作图片
  • 留白的网站温州高端网站建设公司哪家好
  • 网站改版301是什么意思杭州免费自助建站模板
  • 镇江房地产网站建设智能建造概论
  • 搭建asp虚拟主机网站画册设计排版的技巧和规则
  • 创世网站建设公司wordpress 仿微博
  • 小语种外贸网站互联网ui设计是什么
  • 海南网站seo免费网站注册免费网站申请
  • 建设单位网站网站建设中的网页布局主要内容
  • 企业做网站需要注意什么网站建设销售渠道
  • 医疗器械网站制作深圳市房地产信息平台官网
  • 北京市专业网站建设微分销系统多少钱
  • 做网站 给源代码广告平台代理
  • 九江做网站的公司哪里好微商货源网下载
  • 外贸网站建设方案手机如何做微电影网站
  • 做网站好赚钱吗谷歌账号注册
  • 建设电子商务网站的试卷推广网站怎样阻止
  • 长沙网站开发微联电商哪个平台销量最好
  • 企业网站优化服务主要围绕着北京海大网智网站建设制作公司
  • 镇江房产网站建设建设厅工作证查询网站
  • 搜索引擎禁止的方式优化网站seo网站三要素怎么做
  • 南京网站建设培训育婴网站模板
  • 网站建设 考核指标金华网站建设电话
  • 网站logo更换福田建网站外包
  • 广州网站运营专业乐云seo景观设计公司排行榜