即时上传文件到Azure Blob

时间:2015-05-11 00:26:33

标签: c# azure-storage-blobs

我正在尝试使用CloudBlockBlob.UploadFromStreamAsync()方法创建一个文件并将其放在blob中。

以下是代码:

    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. 该文件是即时创建的,而不是从客户端上传的。这是正确的方法吗?
  2. 编译器抱怨2个问题:1)StreamWriter的Ctor不带0参数; 2)输入&#39; StreamWriter&#39;无法转换为&#39; Stream&#39; (我在这里进行投射,因为UploadFromStreamAsync()方法将Stream类型作为参数)。如何修复编译器错误? 谢谢!

0 个答案:

没有答案