【发布时间】:2012-11-17 22:19:55
【问题描述】:
我正在尝试修复以下代码在 S3 上导致 0 字节文件且没有错误消息的错误。
此代码以 Stream(来自名称不佳的 FileUpload4)的形式提供,其中包含一张图像和所需的图像路径(来自数据库包装器对象)到 Amazon 的 S3,但文件本身从未上传。
CloudUtils.UploadAssetToCloud(FileUpload4.FileContent, ((ImageContent)auxSRC.Content).PhysicalLocationUrl);
ContentWrapper.SaveOrUpdateAuxiliarySalesRoleContent(auxSRC);
第二行只是保存数据库对象,该对象存储有关(假定)上传图片的信息。这个保存正在执行,证明上面的行运行没有错误。
上面的第一行调用了这个方法,在检索到一个合适的桶名之后:
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 的 PostedFile 属性会更好。相反,我现在正在从中拉出流。还是不行。
【问题讨论】:
-
流的位置是什么?您可能需要将位置重置为零。
标签: c# file-upload amazon-s3