繁体   English   中英

如何通过ASP.Net Web API通过Memory Stream将文件读取到S3

[英]How to read a file via ASP.Net Web API to S3 via Memory Stream

我想将文件读取为内存流并将其发送到s3存储桶。 以下是一个包​​含两个部分的工作片段。

第1部分:获取文件并将其上传到本地目录

第2部分:获取文本并将其上传到s3存储桶。

但是我想将文件上传到s3存储桶,而不是文本

下面是代码片段:

[httppost]    
public async void Upload()
{
        // Part 1:

        // LOGIC TO UPLOAD FILE TO A LOCAL LOCATION 
        var fileuploadPath = ConfigurationManager.AppSettings["FileUploadLocation"];  // some local path
        var provider = new MultipartFormDataStreamProvider(fileuploadPath);
        var content = new StreamContent(HttpContext.Current.Request.GetBufferlessInputStream(true));
        foreach (var header in Request.Content.Headers)
        {
            content.Headers.TryAddWithoutValidation(header.Key, header.Value);
        }
        await content.ReadAsMultipartAsync(provider);

        // Part 2:

        // LOGIC TO WRITE DATA TO s3 Bucket via Amazon Kinesis
        byte[] dataAsBytes = Encoding.UTF8.GetBytes("My Test Data for s3 bucket");
        using (MemoryStream memoryStream = new MemoryStream(dataAsBytes))
        {
                Amazon.KinesisFirehose.Model.PutRecordRequest putRecord = new Amazon.KinesisFirehose.Model.PutRecordRequest();
                putRecord.DeliveryStreamName = myStreamName;
                Record record = new Record();
                record.Data = memoryStream; // I WANT TO PUT FILE CONTENT HERE
                putRecord.Record = record;
                await kinesisClient.PutRecordAsync(putRecord);
        }
}

在上面的代码片段中,我想将要上传的文件发送到s3存储桶。

伪代码:

Current Code
byte[] dataAsBytes = Encoding.UTF8.GetBytes("My Test Data for s3 bucket");
What I want
byte[] dataAsByte = Data should be read from the file 

您可以读取所有字节并构造一个内存流:

string fileName = provider.FileData.First().LocalFileName; // assuming you have one file
byte[] fileData = File.ReadAllBytes(fileName);
using (MemoryStream memoryStream = new MemoryStream(fileData))
{

请注意,该字段中允许的最大大小为50kb,因此您可能要为此添加验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM