次のコードがS3で0バイトのファイルになり、エラーメッセージが表示されないバグを修正しようとしています。
このコードは、画像と目的の画像パス(データベースラッパーオブジェクトから)を含むストリーム(名前の悪いFileUpload4から)をAmazonのS3にフィードしますが、ファイル自体はアップロードされません。
CloudUtils.UploadAssetToCloud(FileUpload4.FileContent, ((ImageContent)auxSRC.Content).PhysicalLocationUrl);
ContentWrapper.SaveOrUpdateAuxiliarySalesRoleContent(auxSRC);
2行目は、(おそらく)アップロードされた画像に関する情報を格納するデータベースオブジェクトを保存するだけです。この保存は完了しており、上記の行がエラーなしで実行されていることを示しています。
上記の最初の行は、適切なバケット名を取得した後、このメソッドを呼び出します。
public static bool UploadAssetToCloud(Stream asset, string path, string bucketName, AssetSecurity security = AssetSecurity.PublicRead)
{
TransferUtility txferUtil;
S3CannedACL ACL = GetS3ACL(security);
using (txferUtil = new Amazon.S3.Transfer.TransferUtility(AWSKEY, AWSSECRETKEY))
{
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
.WithBucketName(bucketName)
.WithTimeout(TWO_MINUTES)
.WithCannedACL(ACL)
.WithKey(path);
request.InputStream = asset;
txferUtil.Upload(request);
}
return true;
}
ストリームが適切なストリームであることを確認しました-アクセス許可があり、バケットが存在し、パスが正常である他の場所に保存できます(ファイルはS3の宛先で作成され、データが入力されないだけです)ストリームのコンテンツ)。私は私の知恵の終わりに近づいています、ここで-私は何が欠けていますか?
編集:私の同僚の1人は、FileUploadのPostedFileプロパティの方が良いと指摘しました。代わりに、私は今、そのストリームを引き出しています。それはまだ機能していません。