2016-04-19 8 views
0

ストリームを使用していて、WebアプリケーションからAWSにテキストファイルをアップロードするのが難しいです。具体的には、HttpPostedFileBase.InputStreamの(Stream)へのキャストはエラーをスローしませんが、結果のStreamにはヌルチェックを渡してもデータは含まれないため、アップロードは「機能する」が常に空白のテキストドキュメントになります。私はこの質問をSAの検索で見つけることができませんでした。コードはAWS SDKのサンプルから複製され、入力ストリームは開始位置が0に設定されたMemoryStreamにコピーされていました。 。なぜ誰もこれが動作していないとそれを修正する方法を知っていますか?前もって感謝します!HttpPostedFileBase.InputStreamストリームにサイレントキャストできません

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

ここでの回答は、ネストすることと本質的には投稿されたコードとは関係がありません。ストリームの仕組みは完全にはわかりませんが、最初のReadLineの値をチェックして保存するかどうかを知る質問メソッドの最初にStreamReaderがありました。 ReadLinesを使ってwhileループからこの質問のコードを取り除くと、アップロードが成功しました。疑問の中でネストされたStreamやMemoryStreamを必要とせずにバリデーションを再構成した後、すべてが正常に動作します。

関連する問題