我正在尝试修复以下代码导致 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 属性会更好。相反,我现在正在从中拉出流。它仍然无法正常工作。