首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#字节数组到Javascript Blob以创建和自动下载PDF文件

的过程可以通过以下步骤实现:

  1. 首先,将C#字节数组转换为Base64字符串。可以使用C#的Convert.ToBase64String方法将字节数组转换为Base64字符串。
  2. 在前端的JavaScript代码中,使用atob函数将Base64字符串解码为二进制数据。
  3. 创建一个Blob对象,将解码后的二进制数据作为参数传入。Blob对象表示一个不可变、原始数据的类文件对象。
  4. 使用URL.createObjectURL方法创建一个URL,该URL指向Blob对象。
  5. 创建一个a标签元素,并设置其href属性为上一步创建的URL。
  6. 设置a标签的download属性为要下载的文件名,例如"file.pdf"。
  7. 将a标签添加到文档中。
  8. 使用JavaScript的click方法模拟用户点击a标签,从而触发文件下载。

下面是一个示例代码:

代码语言:txt
复制
// C#代码
byte[] pdfBytes = GetPdfBytes(); // 获取PDF字节数组
string base64String = Convert.ToBase64String(pdfBytes); // 将字节数组转换为Base64字符串
string javascriptCode = $"downloadPdf('{base64String}');"; // 调用JavaScript函数下载PDF文件
ClientScript.RegisterStartupScript(this.GetType(), "DownloadPDF", javascriptCode, true);
代码语言:txt
复制
// JavaScript代码
function downloadPdf(base64String) {
  var binaryString = atob(base64String); // 解码Base64字符串为二进制数据
  var blob = new Blob([binaryString], { type: 'application/pdf' }); // 创建Blob对象
  var url = URL.createObjectURL(blob); // 创建URL
  var a = document.createElement('a'); // 创建a标签
  a.href = url; // 设置href属性为URL
  a.download = 'file.pdf'; // 设置下载文件名
  document.body.appendChild(a); // 添加a标签到文档中
  a.click(); // 模拟点击a标签,触发文件下载
  document.body.removeChild(a); // 下载完成后移除a标签
}

这样,当调用C#代码中的downloadPdf函数时,将会在浏览器中创建并自动下载名为"file.pdf"的PDF文件。请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和优化。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 云函数(SCF):https://cloud.tencent.com/product/scf
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 人工智能平台(AI):https://cloud.tencent.com/product/ai
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于 Blob

二进制格式存储 Blob 对象表示一个不可变、原始数据的类文件对象。...Node 层返回的二进制文件流字符串并下载文件 这里我利用 Blob 实现文件拆分再合并下载的方法,算是第一次使用 我们最常见的应该是 Blob URL 技术,文件上传的预览、视频播放的 src,均是采用这种技术实现...对象的数据,数组中的每项元素可以是ArrayBuffer, ArrayBufferView, Blob, DOMString options:可选参数;字典格式类型,可以指定如下两个属性: type:放入...,可赋值 a 标签 href 属性进行下载 const url = URL.createObjectURL(blob) 通过 Blob 生成文件、利用 Blob URL 获取下载链接,这样就实现后端返回二进制格式的文件进行合并再下载...file.slice() 方法对文件进行分片,序号为 0 - n,和已上传的切片列表做比对,得到所有未上传的分片,push 请求列表 requestList 上传进度 监听原生 Javascript

2.7K10
  • 《你不知道的 Blob》番外篇

    JavaScriptBlob 对象表示一个不可变、原始数据的类文件对象,它不一定非得是大量数据,也可以表示一个小型文件的内容。...options :一个可选的对象,包含以下两个属性: type :默认值为 "" ,表示将会被放入 blob 中的数组内容的 MIME 类型。...属性和方法 2.1 属性介绍 Blob 对象拥有 2 个属性: size :只读,表示 Blob 对象中所包含的数据大小(字节为单位); type :只读,值为字符串,表示该 Blob 对象所包含数据的...Blob JavaScript类型化数组是一种类似数组的对象,并提供了一种用于 访问原始二进制数据的机制 。...下载文件 通过调用 Blob 的构造函数来创建类型为 "text/plain" 的 Blob 对象,然后通过动态创建 a 标签来实现文件下载

    2.5K00

    【笔记】618- 读《你不知道的 Blob》笔记

    JavaScriptBlob 对象表示一个不可变、原始数据的类文件对象,它不一定非得是大量数据,也可以表示一个小型文件的内容。...options :一个可选的对象,包含以下两个属性: type :默认值为 "" ,表示将会被放入 blob 中的数组内容的 MIME 类型。...属性和方法 2.1 属性介绍 Blob 对象拥有 2 个属性: size :只读,表示 Blob 对象中所包含的数据大小(字节为单位); type :只读,值为字符串,表示该 Blob 对象所包含数据的...Blob JavaScript类型化数组是一种类似数组的对象,并提供了一种用于 访问原始二进制数据的机制 。...下载文件 通过调用 Blob 的构造函数来创建类型为 "text/plain" 的 Blob 对象,然后通过动态创建 a 标签来实现文件下载

    3.3K40

    万字长文带你学习【前端开发中的二进制数据】| 技术创作特训营第五期

    在前端开发中,流提供了一种逐段方式读取和处理数据的机制,避免一次性加载整个数据集内存中。流在处理网络数据、大文件或实时数据时非常有用,它允许逐步处理数据,减少内存占用并提高性能。...TypedArraysTypedArrays 是 JavaScript 中一系列特定类型的数组,比如 Uint8Array、Float32Array 等。...options 是一个可选的BlobPropertyBag字典,它可能会指定如下两个属性:type,默认值为 "",它代表了将会被放入 blob 中的数组内容的 MIME 类型。...用途 :Blob 主要用于表示任意类型的二进制数据,而 File 更适合用于表示文件,特别是在涉及用户上传文件时。...application/pdf':表示 PDF 文档。'audio/mpeg':表示 MP3 音频文件。'video/mp4':表示 MP4 视频文件。'

    50631

    JS中的二进制数据处理

    为了解决这个问题,JavaScript 引入DataView对象,可以设定字节序。...下面介绍一下业务场景中比较常见到的一种二进制表示类型——Blob。 三、Blob 3.1 基本介绍   Blob 对象比较常用于文件上传、文件读写操作等。...arrayBuffer方法返回一个 Promise 对象,包含 blob 中的数据,并在 ArrayBuffer 中二进制数据的形式呈现。...……*/); 3.2 运用场景 通过window.URL.createObjectURL方法可以把一个blob转化为一个Blob URL,并且用做文件下载或者图片显示的链接。...「文件下载」 「图片显示」 「切片上传」 「本地文件读取」 四、参考资料 《了解 ES6 TypedArray 和 DataView》 《聊聊JS的二进制家族:Blob、ArrayBuffer

    3.6K20

    Apache IoTDB C# SDK 介绍

    ,一种专门为时间序列数据设计的列式文件格式。...其中 Apache.IoTDB.Data 是对ADO .NET支持,.NET 读取数据库的方式方便不同使用习惯的用户, C#客户端也及时更新支持最新的Apache IoTDB的特性,如对齐序列插入、SchemaTemplate.../blob/main/docs/time_profile_zh.pdf ,建议大家看一看,这里只说结论: 在插⼊与该⽤⼾类似的结构化较强、没有空值、规整、每⾏的column固定的的数据时,建议使⽤insert_tablet...AE%A2%E6%88%B7%E7%AB%AF%E4%BB%8B%E7%BB%8D%20(6).pdf IoTDB C#客⼾端性能分析报告:https://github.com/eedalong/Apache-IoTDB-Client-CSharp.../blob/main/docs/time_profile_zh.pdf API 接口: https://github.com/eedalong/Apache-IoTDB-Client-CSharp/blob

    74620

    C#.NET.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)

    C#/.NET/.NET Core技术前沿周刊汇总:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetWeekly.md...、C++、VB.NET、F#、XAML、CSS、LESS、SCSS、JavaScript和TypeScript代码。...它提供了多种功能,如清理代码、格式化注释、连接多行、移除全部 #region、排序多行等,提高代码的可读性和一致性,从而提高你的开发效率。...文章地址:https://mp.weixin.qq.com/s/n96rH5HZbSEKKeop_bxRHQ 用C#写个PDF批量合并工具简化日常工作 文章简介:用C#写个PDF批量合并工具简化日常工作...文章地址:https://www.cnblogs.com/mingupupu/p/18431071 C#实现信国产Linux桌面录制成MP4(源码,银河麒麟、统信UOS) 文章简介:C#实现信国产Linux

    5910

    谁说前端不需要懂二进制

    作为一名前端,在工作中也会遇到很多有关二进制处理的需求,如 EXCEL 表格的导出,PDF 的生成,多个文件的打包,音频的处理。...而基于 TypedArray,有如下数据类型: Uint8ArrayUint 及 Unsigned Int 代表数组的每一项是无符号整型8 代表数据的每一项占 8 个比特位,即一个字节 Int8Array...const array = new Int32Array([1, 2, 3]) // .length 代表数组的大小 // 3 array.length // .btyeLength 代表数据所占字节大小...Blob Blob 是浏览器端的类文件对象。操作 Blob 需要使用数据类型 FileReader。...关于下载的函数 download,可以参考以上环节 数据输出-下载[3] Text -> Blob -> Object URL 可以把以下代码直接粘贴到控制台下载文件 const json = {

    1.1K10

    Chrome 103支持使用本地字体,纯前端导出PDF优化

    在前端导出PDF,解决中文乱码一直是一个头疼的问题。要解决这个问题,需要将ttf等字体文件内容注册页面PDF生成器中。...但是之前网页是没有权限直接获取客户机器字体文件,这时就需要从服务器下载字体文件或者提示用户选择字体文件上传到页面。对于动辄数十兆(M)的中文字体文件,网络不好时并不是一个好的解决方案。...,提供高座效率。...选择需要使用的字体内容,注册PDF生成工具中 使用blob 方法可以获取字体文件内容 let currentFont = fontList[fontListSelect.value]; const...解决方法是需要从服务器中下载目标字体或使用其他字体作为替代。 拓展阅读 React + Springboot + Quartz,从0实现Excel报表自动化 电子表格也能做购物车?

    1.1K40

    C Sharp(一)

    C Sharp(一) 發佈於 2018-10-15 之前本来想学习一下 NodeJS,考虑最近一直在使用 C#(主要使用 .Net Core 的 MVC 和 API),并且之前也仔细地研究过一段时间的...语句 C# 中的语句必须分号作为结束标志。 块是由成对的大括号包围的 0 条或多条语句序列,在语法上,相当于一条语句。...,其实就是学习如何创建和使用类型,所以我们需要了解什么是类型。...C# 数组这一特征与 Objective-C 相同,与 JavaScript 的特征不同。 然而,另外一些类型可以包含不同类型的数据项,这些类型中的数据项个体称为 成员。...一些类型的变量如果在声明时没有初始化,那么会被自动设置为默认值。 注意: 本地变量和参数不会被自动初始化,类字段,结构字段和数组元素会被自动初始化。

    1.6K30

    文件分片上传和分片下载

    文件流操作 在软件开发中,我们会看到各种形形色色的文件/资源(pdf/word/音频/视频),其实它们归根到底就是不同数据格式的满足自身规则的情况下展示。...Blob 对象[1](Binary Large Object)对象是一种可以在 JavaScript 中存储大量二进制数据的对象。...在前端范围内,我们使用JavaScript中的File API[7]获取文件对象,并使用Blob.prototype.slice()[8]方法将文件切成多个分片,从而实现分片上传。...客户端发送请求获取分片列表并开始下载第一个分片。 在下载过程中,客户端基于分片列表发起并发请求以下载其他分片,并逐渐拼接和合并下载的数据。...继续设置标签的属性以下载文件名,这样在点击时可以自动下载文件。 5.

    20710

    推荐10款优秀的 MongoDB GUI 工具

    将 MongoDB 查询(查找,聚合或 SQL 查询)转换为各种目标语言:MongoDB Shell,JavaScript(Node.js),Java,C#和 Python。...主要功能: 使用 IntelliShell 自动完成查询 拖放字段直观地构建查询 使用带有 INNER 和 OUTER 连接的 SQL 查询 MongoDB 从 SQL 或 mongo shell 生成驱动程序代码...,XPS,JSON,dBase 和 PNG 等文件格式 它提供了动态 C#脚本查询编辑器,该编辑器支持 Linq to MongoDB 和 Linq to Dataset 它允许从 XML,CSV 和...MongoJS 查询分析器是 MongoDB JavaScript 编辑器,允许用户执行 JavaScript 命令,并支持自动完成和语法突出显示。结果可以在树层次结构、网格结果和文本中看到。...主要功能: 查看和管理文件建和修改文档 使用查询生成器搜索文档 JSON 格式将数据库和集合导出为 ZIP 存档 下载地址: https://mongolime.com/ 封面图片来源:unsplash

    19.4K51
    领券