如何使用 Web API 返回文件?

2023-11-23

我在用ASP.NET Web API.
我想从 API(API 生成的)使用 C# 下载 PDF。

我可以让 API 返回一个byte[]?对于 C# 应用程序,我可以这样做:

byte[] pdf = client.DownloadData("urlToAPI");? 

and

File.WriteAllBytes()?

最好返回其中包含 StreamContent 的 HttpResponseMessage。

这是示例:

public HttpResponseMessage GetFile(string id)
{
    if (String.IsNullOrEmpty(id))
        return Request.CreateResponse(HttpStatusCode.BadRequest);

    string fileName;
    string localFilePath;
    int fileSize;

    localFilePath = getFileFromID(id, out fileName, out fileSize);
       
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
    response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = fileName;
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

    return response;
}

UPDATE来自评论者patridge: 如果其他人到达这里希望从字节数组而不是实际文件发送响应,您将需要使用new ByteArrayContent(someData)代替StreamContent (see here).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Web API 返回文件? 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 登录成功后如何重定向到页面?

    我对 Web 表单开发相当陌生 正在尝试使用 VS 2010 中的 ASP NET Web 应用程序模板创建的项目 用户成功登录后 我希望将用户重定向到我创建的页面 如何修改我的项目以在登录后重定向用户 任何示例 教程 等都非常感谢 Tha
  • Base91,是怎么计算的?

    我一直在网上查找 basE91 是如何计算的 我找到了诸如this one它指定了用于特定值的字符 但我没有找到如何获取该值的方法 我尝试将输入值更改为二进制并获取 6 位和 7 位的块 但这些不起作用 并且我得到了不正确的输出 我不想要为
  • 有没有类似 GhostDoc 的 C++ 工具

    当我使用 C 进行开发时 我大量使用 GhostDoc 来加快代码注释的过程 我目前正在开发一个 C 项目 但尚未找到等效的工具 我了解 Doxygen 但据我所知 它用于在代码外创建文档 而不是在代码中创建注释 有没有好的等效工具 我更喜
  • WPF:如何循环浏览窗口中的所有控件?

    如何循环遍历 WPF 窗口中的所有控件 我在MSDN 文档所以这有帮助 Enumerate all the descendants of the visual object static public void EnumVisual Vis
  • ImageIO.read() 返回 403 错误

    我有以下代码 public BufferedImage urlToImage String imageUrl throws MalformedURLException IOException URL url new URL imageUrl
  • 拦截JAX-RS请求:向tomcat注册ContainerRequestFilter

    我正在尝试通过 ContainerRequestFilter 拦截对我的 JAX RS Web 服务的请求 我想将它与自定义注释一起使用 这样我就可以装饰 Web 服务的某些方法 这应该使我能够根据是否在安全通道上发出的信息来处理对此方法的
  • uWSGI - Django 管理员的不同 Harakiri 超时

    是否可以将 Django 管理页面的 uWSGI 的 harakiri 超时设置为不同的 我有一个网站需要上传大文件 这可能需要 20 或 30 秒以上 但我希望全局 harakiri 超时更像 15 秒 因为我将数据发送回用户的方式 uW
  • 使用意图 URI 启动我的应用程序

    我知道这个问题已经在 StackOverflow 中被问过很多次了 但我还没有找到解决方案 我的应用程序发送一封电子邮件 其中包含一个链接 单击该链接后应启动该应用程序 根据 hackbod 的说法 最好的方法是使用 Intent URI
  • 启动 jupyter-lab 并从命令行打开特定笔记本?

    我正在编写一个 bash 脚本 最后启动 jupyter lab 并 理想情况下 打开一个特定的笔记本 在 jupyter 中 这很容易做到 jupyter notebook my folder my notebook ipynb 我找不到
  • 清除wpf中的数据网格值

    我需要冲洗我的datagrid每当一个treeviewitem被点击 我的代码如下 private void treeView1 SelectedItemChanged object sender RoutedPropertyChanged
  • 全局构造函数调用不在 .init_array 部分

    我正在尝试在嵌入式目标 ARM Cortex M3 上添加全局构造函数支持 假设我有以下代码 class foobar int i public foobar i 100 void inc i foobar foo int main foo
  • 在.NET中生成PDF文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在使用 C NET 2 0 我想生成一个 PDF 文件 我应该在文件中写一段文字 生成PDF需要满足哪些先决条件 任何简单的编码示例都会对我有帮
  • jQuery 文件上传在 IE 8 和 9 中不起作用

    此代码适用于 FF 和 chrome 在 IE 8 或 9 中 我收到 500 错误 指出非空属性为空 这是html div class fileupload buttonbar div
  • `f()` 和 `new f()` 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中的 new 关键字是什么 从 JS 闭包创建对象 我应该使用 new 关键字吗 看这段代码 function friend name return name name var
  • 使用jQuery获取url并提取url段

    在具有类别列表的网页上 每个类别标题都按以下格式链接 http localhost admin category unpublish 2 我编写了以下js代码 试图捕获url和段 unpublish action 和 2 id 并且需要将请
  • Windows 和 Linux 上 fopen 中“r+”的使用

    我正在摆弄一些打开 读取和修改文本文件的代码 一个快速 简化 的例子是 include
  • Vue.js 通过单击按钮打开模式

    如何使用按钮在其他组件中显示模态框 例如 我有以下组件 info vue
  • sklearns OMP 中的“字典中的线性相关性”异常

    我正在使用 sklearns正交匹配追踪使用由学习者学习的字典来获得信号的稀疏编码KSVD算法 但是 在拟合期间我收到以下运行时警告 usr local lib python2 7 dist packages sklearn linear
  • MSBuild ItemGroup 包含/排除模式问题

    问题 未根据排除属性中传递的值正确构建 ItemGroups 数组 如果您运行此脚本 它会创建一些示例文件 然后尝试根据包含 排除属性创建一个名为 TheFiles 的数组 问题是当排除不是硬编码或非常简单的属性时 它会出错 目标 Dyna
  • 如何使用 Web API 返回文件?

    我在用ASP NET Web API 我想从 API API 生成的 使用 C 下载 PDF 我可以让 API 返回一个byte 对于 C 应用程序 我可以这样做 byte pdf client DownloadData urlToAPI