我正在编写一个应用程序,我们需要在不同的 s3 帐户之间传输文件,我们不想在上传到目标 s3 帐户之前将文件保存在本地。
因此,我们使用以下方法获取源文件流:
public Stream GetFileStream(string path)
{
var pathPieces = path.Split('/');
string bucket = pathPieces[0];
string fileName = pathPieces[pathPieces.Length - 1];
GetObjectRequest request = new GetObjectRequest();
request.BucketName = bucket;
request.Key = fileName;
GetObjectResponse response = Client.GetObject(request);
return response.ResponseStream;
}
之后我们使用这个流上传到目的地:
TransferUtility transferUtility = new TransferUtility(Client);
transferUtility.S3Client.PutBucket(new PutBucketRequest() { UseClientRegion = true }.WithBucketName(bucket));
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
.WithBucketName(bucket)
.WithKey(key)
.WithPartSize(1024)
.WithTimeout(100 * 60 * 60 * 1000)
.WithAutoCloseStream(true)
.WithCannedACL(S3CannedACL.PublicReadWrite)
.WithInputStream(fileStream) as TransferUtilityUploadRequest;
transferUtility.Upload(request);
但在最后一行“上传”函数调用我总是得到这个错误: 这个流不支持搜索操作。
有没有不同的方法来做我想做的事情?因为它接缝的方式不正确