我試圖修復以下代碼導致S3上的0字節文件並沒有錯誤消息的錯誤。FileUpload到亞馬遜S3結果爲0字節文件
這段代碼以一個包含圖像和所需圖像路徑(從數據庫包裝器對象)到亞馬遜S3的Stream(來自命名不正確的FileUpload4)爲饋送,但文件本身從未上傳。
CloudUtils.UploadAssetToCloud(FileUpload4.FileContent, ((ImageContent)auxSRC.Content).PhysicalLocationUrl);
ContentWrapper.SaveOrUpdateAuxiliarySalesRoleContent(auxSRC);
第二行簡單地節省了存儲關於(假想)上傳的圖像信息的數據庫對象。此保存正在進行,證明上述線路沒有錯誤地運行。
上面的調用的第一行中的這種方法,獲取適當的bucketname後:
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上的目標位置創建,它只是不會使用流的內容填充)。我接近我的智慧結局,在這裏 - 我錯過了什麼?
編輯:我的一位同事指出,它會更好FileUpload的PostsFile屬性。相反,我現在正在從這個流中抽取流。它仍然沒有工作。
流的位置是什麼?您可能需要將位置重置爲零。 – JMarsch