首页 > 解决方案 > 文件上传到rabbitmq

问题描述

我需要一个 .NET Api 端点,我可以通过流将文件发布到 RabbitMQ。我已经完成了一个端点来将文件发布到服务器,如下所示:microsoft tutorial。我大致知道如何将数据传递给 RabbitMQ:

var body = Encoding.UTF8.GetBytes("my message");
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);

但我不知道如何将文件或流放入通道。有教程吗,或者你能给我解释一下吗?会很好。谢谢。

标签: c#.netrabbitmqasp.net-core-webapi

解决方案


只需从文件中读取字节:

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);
   }

推荐阅读