我正在尝试创建一个文件并将其放入 blob 中CloudBlockBlob.UploadFromStreamAsync()
method.
这是代码:
private async void CreateCsvFile(int recId)
{
using (var csvFile = new StreamWriter())
{
for (int i = 1; i <= recId; ++i)
{
Ad ad = db.Ads.Find(i);
if (ad != null)
{
string rec = String.Format("{0}, {1}, {2}, {3}, {4}", ad.Title, ad.Category, ad.Price, ad.Description, ad.Phone);
csvFile.WriteLine(rec);
}
}
csvFile.Flush();
string blobName = Guid.NewGuid().ToString() + recId.ToString() + ".csv";
CloudBlockBlob fileBlob = fileBlobContainer.GetBlockBlobReference(blobName);
await fileBlob.UploadFromStreamAsync((Stream) csvFile);
}
}
更新了新要求:
// Create a decrytor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
//Write all data to the stream.
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
问题:
- 该文件是动态创建的,而不是从客户端上传。这是正确的方法吗?
- 编译器抱怨两个问题:1)StreamWriter 的 Ctor 不接受 0 参数; 2)类型“StreamWriter”无法转换为“Stream”(我在这里进行转换是因为
UploadFromStreamAsync()
方法以 Stream 类型作为参数)。如何修复编译器错误?
谢谢!
所以我之前有一个到 blob 的流,如下所示:
public async Task<Stream> GetWriteStreamAsync(string storagePath, string contentType)
{
var blockBlob = blobContainer.GetBlockBlobReference(storagePath);
blockBlob.Properties.ContentType = contentType;
CloudBlobStream bb = await blockBlob.OpenWriteAsync();
return bb;
}
所以现在你可以
using(var str = await GetWriteStreamAsync("someBlobName.csv", "text/csv"))
using(var csvFile = new StreamWriter(str))
{
for (int i = 1; i <= recId; ++i)
{
Ad ad = db.Ads.Find(i);
if (ad != null)
{
string rec = String.Format("{0}, {1}, {2}, {3}, {4}",
ad.Title,
ad.Category,
ad.Price,
ad.Description,
ad.Phone);
csvFile.WriteLine(rec);
}
}
csvFile.Flush();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)