[英]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.