c# gzip html,C#代码到GZip并将字符串上传到Amazon S3

我目前使用以下代码从Amazon C#中检索和解压缩字符串数据:

GetObjectRequest getObjectRequest = new GetObjectRequest().WithBucketName(bucketName).WithKey(key);

using (S3Response getObjectResponse = client.GetObject(getObjectRequest))

{

using (Stream s = getObjectResponse.ResponseStream)

{

using (GZipStream gzipStream = new GZipStream(s, CompressionMode.Decompress))

{

StreamReader Reader = new StreamReader(gzipStream, Encoding.Default);

string Html = Reader.ReadToEnd();

parseFile(Html);

}

}

}

我想反转这段代码,以便我可以压缩并将字符串数据上传到S3,而无需写入磁盘.我尝试了以下,但我得到一个例外:

using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKeyID, AWSSecretAccessKeyID))

{

string awsPath = AWSS3PrefixPath + "/" + keyName+ ".htm.gz";

byte[] buffer = Encoding.UTF8.GetBytes(content);

using (MemoryStream ms = new MemoryStream())

{

using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress))

{

zip.Write(buffer, 0, buffer.Length);

PutObjectRequest request = new PutObjectRequest();

request.InputStream = ms;

request.Key = awsPath;

request.BucketName = AWSS3BuckenName;

using (S3Response putResponse = client.PutObject(request))

{

//process response

}

}

}

}

我得到的例外是:

Cannot access a closed Stream.

我究竟做错了什么?

编辑:

在使用的结束括号(GZipStream zip)上发生异常

堆栈跟踪:

at

System.IO.MemoryStream.Write(Byte[]

buffer, Int32 offset, Int32 count)

at

System.IO.Compression.DeflateStream.Dispose(Boolean

disposing) at

System.IO.Stream.Close() at

System.IO.Compression.GZipStream.Dispose(Boolean

disposing) at

System.IO.Stream.Close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值