gpt4 book ai didi

c#-4.0 - Gzip 并上传到 Azure blob

转载 作者:行者123 更新时间:2023-12-02 19:32:29 30 4
gpt4 key购买 nike

我正在尝试使用 gzip 压缩并将静态 js 文件上传到 Azure blob,但最终得到的是 0 字节 blob。有人可以告诉我我做错了什么吗?

var filePath = "C:\test.js";

using (var compressed = new MemoryStream()) {
using (var gzip = new GZipStream(compressed, CompressionMode.Compress)) {
var bytes = File.ReadAllBytes(filePath);
gzip.Write(bytes, 0, bytes.Length);

var account = CloudStorageAccount.Parse("...");
var blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials);
var blobContainer = blobClient.GetContainerReference("temp");
var blob = blobContainer.GetBlockBlobReference(Path.GetFileName(filePath));
blob.Properties.ContentEncoding = "gzip";
blob.Properties.ContentType = "text/javascript";
blob.Properties.CacheControl = "public, max-age=3600";

blob.UploadFromStream(compressed);
}
}

最佳答案

您需要将压缩流上的流位置重置为零。您已将数据写入流中,但是当您从最后一行的流中上传时,流的位置位于您写入的数据的末尾,因此 blob.UploadFromStream 从流,后面没有任何内容。

在执行上传之前添加以下内容:

compressed.Position = 0;

这应该上传流的完整内容。

这不一定是 Azure 的事情,大多数使用流的代码都会在流的当前位置进行操作。我已经被它烧伤过好几次了。

关于c#-4.0 - Gzip 并上传到 Azure blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913558/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com