HttpPostedFileBase.InputStream 投射到流静默失败

HttpPostedFileBase.InputStream Cast to Stream Silently Fails

我刚开始使用流,很难将文本文件从 Web 应用程序上传到 AWS。具体来说,将 HttpPostedFileBase.InputStream 强制转换为 (Stream) 不会引发错误,但生成的 Stream 不包含任何数据,即使它通过了空检查,因此上传 "works" 但始终会导致空白文本文档。我在搜索 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();
    }
}

这里的答案与嵌套有关,与发布的代码没有内在的关系。我不完全确定流是如何工作的,但在问题方法的开头有一个 StreamReader 检查初始 ReadLine 的值以了解是否保存。当我将这个问题的代码从执行 ReadLines 的 while 循环中移出时,上传成功了。在不需要问题中的嵌套 Stream 或 MemoryStream 的情况下重新组织验证后,一切都按预期进行。