在上传到azure blob存储之前加密图像数据

时间:2014-01-24 14:48:17

标签: c# .net asp.net-mvc azure azure-storage-blobs

我有以下代码将图像上传到Azure blob存储。我想在上传到blob之前加密图像数据。我已经有一个加密和解密的辅助类,可以通过调用AESEncryption.Encrypt(“plainText”,“key”,salt“)来使用;

我只想弄清楚tom如何将我的加密方法集成到代码中。另外,我猜测一旦加密而不是调用blob.UploadFromFile(),我将调用blob.UploadFromByteArray()。

public override Task ExecutePostProcessingAsync()
    {
        try
        {
            // Upload the files to azure blob storage and remove them from local disk
            foreach (var fileData in this.FileData)
            {
                var filename = BuildFilename(Path.GetExtension(fileData.Headers.ContentDisposition.FileName.Trim('"')));

                // Retrieve reference to a blob
                var blob = _container.GetBlockBlobReference(filename);
                blob.Properties.ContentType = fileData.Headers.ContentType.MediaType;
                blob.UploadFromFile(fileData.LocalFileName, FileMode.Open);
                File.Delete(fileData.LocalFileName);
                Files.Add(new FileDetails
                {
                    ContentType = blob.Properties.ContentType,
                    Name = blob.Name,
                    Size = blob.Properties.Length,
                    Location = blob.Uri.AbsoluteUri
                });
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }

        return base.ExecutePostProcessingAsync();
    }

1 个答案:

答案 0 :(得分:1)

在我看来,你可以用3种方式做到:

  1. 事先加密文件,然后上传该加密文件。
  2. 如您所述,您可以读取字节数组中的文件,然后加密该字节数组并使用UploadFromByteArray方法上传它。
  3. 与#2相似,但不是上传字节数组,而是依靠流并使用UploadFromStream方法上传。