c# - 文件上传到rabbitmq
问题描述
我需要一个 .NET Api 端点,我可以通过流将文件发布到 RabbitMQ。我已经完成了一个端点来将文件发布到服务器,如下所示:microsoft tutorial。我大致知道如何将数据传递给 RabbitMQ:
var body = Encoding.UTF8.GetBytes("my message");
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
但我不知道如何将文件或流放入通道。有教程吗,或者你能给我解释一下吗?会很好。谢谢。
解决方案
只需从文件中读取字节:
var body = File.ReadAllBytes(@"C:\test.xml");
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
UPD
使用类获取上传的文件MultipartMemoryStreamProvider
:
[HttpPost]
public async Task Upload()
{
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
var file = provider.Contents.FirstOrDefault();
var body = await file.ReadAsByteArrayAsync();
channel.BasicPublish(
exchange: "",
routingKey: "hello",
basicProperties: null,
body: body);
}
推荐阅读
- python - 我无法用 django 发送电子邮件
- html - How to implement keyboard input in WebGL?
- vue.js - 在元素 ui 表中添加硬编码行
- mysql - MySQL创建没有选择数据库的临时表
- kotlin - Kotlin:使用 startActivityForResult 与同伴一起启动活动
- c# - Visual Studio 自动完成功能不起作用
- python - SEC EDGAR 20-F 表格 - 如何处理包含 html 标签的文本
- c# - try/catch 块没有捕获我的测试异常。但我在 UIApplication.Main(args, null, "AppDelegate"); 中得到 System.NullReferenceException
- c++ - C++ 类型的全局头函数解释
- java - 一页Spring MVC上的两个表单对象