我刚开始使用流式处理器,并且无法将文本文件从Web应用程序上传到AWS。具体来说,HttpPostedFileBase.InputStream到(Stream)的强制转换不会抛出错误,但是生成的Stream即使通过空检查也不包含任何数据,因此上传“有效”但总是会生成空白文本文档。我在搜索SO时找不到这个问题,代码是从AWS SDK示例中复制的,并且输入流已经被复制到一个起始位置设置为零的MemoryStream,所以我在这里死路一条。有谁知道为什么这不起作用以及如何解决它?提前谢谢!
using (var client = new AmazonS3Client(Amazon.RegionEndpoint.USWest1))
{
Stream saveableStream = new MemoryStream();
using (Stream source = (Stream)UploadedHttpFileBase.InputStream)
{
source.Position = 0;
source.CopyTo(saveableStream);//Results in no data!
}
saveableStream.Position = 0;
//Save File to Bucket
try
{
PutObjectRequest request = new PutObjectRequest
{
BucketName = bucketLocation,
Key = UploadedHttpFileBase.FileName,
InputStream = saveableStream
};
PutObjectResponse response = client.PutObject(request);
}
catch (Exception e)
{
e.Message.ToString();
}
}
答案 0 :(得分:0)
这里的答案与嵌套有关,并且与发布的代码没有任何内在联系。我不完全确定流是如何工作的,但是在问题开始时有一个StreamReader检查初始ReadLine的值以了解是否保存。当我将这个问题的代码从执行ReadLines的while循环中移出时,上传工作正常。重新组织验证后,不需要在问题中使用嵌套的Stream或MemoryStream,一切都按照它应该的那样工作。