将内存流从一个API传递到另一个API

时间:2016-11-28 09:48:57

标签: c# asp.net-web-api2 export-to-excel awss3transferutility

我正在尝试将一些数据导出到Excel并将该Excel存储在AWS S3中。我们当前的架构就像,

  1. 我们从数据库中获取数据并根据我们的需要对其进行操作。这是一次API调用。

  2. 我们需要将该数据作为流传递给另一个API(专门设计用于与AWS S3交互)

  3. 将该流存储为AWS S3中的Excel文件。

  4. 到目前为止,我所取得的成就是:

    我能够从数据库中获取数据并将其转换为内存流。我已经写了另一个API来接收这个流。但是无法将内存流从一个API传递到另一个API。

    第一个API:

        public async Task<ICollection<UserDTO>> ExportUsers(Guid groupId, HttpRequestMessage request)
        {
    
           var ms = // get's memory stream out of data received from database.
    
              var client = new HttpClient
                                 {
                                   BaseAddress = new Uri("http://localhost:58025/")
                                 };
                        client.DefaultRequestHeaders.Accept.Clear();
                        client.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/bson"));
    
          MediaTypeFormatter bsonFormatter = new BsonMediaTypeFormatter(); 
        //Not sure about BsonMediaTypeFormmater. Juz gave it a try
    
           var response = await  client.PostAsync("http://localhost:58025/Resource/Memory", ms, bsonFormatter);
        }
    

    第二个API:

       [HttpPost]
       [Route("Resource/Memory", Name = "UploadMemory")]
       public async Task<IHttpActionResult> UploadMemoryFile(MemoryStream memory)
       {
           // Not reaching until here
       }
    

    非常感谢任何帮助!!

0 个答案:

没有答案