技术开发 频道

实例解读Azure Blob架构及应用开发

  在这里使用cloudBlob.FetchAttributes()来获取Blob的属性或者元数据,把查询出来的ImageEntity实体结合绑定到GridView上去,这样我们在列表里就能看到有哪些Blob的数据。

/// <summary>
        
/// 上传
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        protected void btnSave_Click(
object sender, EventArgs e)
        {
            
//获取扩展名
            
string extension = System.IO.Path.GetExtension(fileUploadControl.FileName);

            
//创建Blob并且重命名
            var blob
= _BlobContainer.GetBlobReference(Guid.NewGuid().ToString() + extension);
            blob.UploadFromStream(fileUploadControl.FileContent);

            
//设置元数据到Blob
            blob.Metadata[
"FileName"] = txtFileName.Text;
            blob.Metadata[
"Length"] = fileUploadControl.FileContent.Length.ToString();
            DirectoryInfo di
= new DirectoryInfo(string.Format("{0}\\", conContainerAddress));
            blob.Metadata[
"FolderName"] = di.Name;
            FileInfo file
= new FileInfo(fileUploadControl.PostedFile.FileName);
            blob.Metadata[
"IsReadOnly"] = file.IsReadOnly.ToString();
            blob.Metadata[
"IsExists"] = file.Exists.ToString();
            blob.Metadata[
"FullFileName"] = file.FullName;
            blob.Metadata[
"ExtendName"] = file.Extension;//extension
            blob.Metadata[
"CreatorName"] = txtCreator.Text;
            blob.Metadata[
"CreateTime"] = DateTime.Now.ToShortTimeString();

            blob.SetMetadata();

            
//设置属性
            blob.Properties.ContentType
= fileUploadControl.PostedFile.ContentType;
            blob.SetProperties();

            
//显示列表
            DisplayFileList();
            txtFileName.Text
= string.Empty;
            txtCreator.Text
= string.Empty;
            statusMessage.Text
= string.Empty;
        }

 

 在上传方法中,使用了blob.SetMetadata()来设置Blob的元数据,把元数据存到了Blob中,blob.SetProperties()来设置Blob的属性,并“Set”进去。

  protected void RowCommandHandler(object sender, GridViewCommandEventArgs e)
        {
            
//删除
            
if (e.CommandName == "DeleteItem")
            {
                
// 获取索引
                var index
= Convert.ToInt32(e.CommandArgument);
                var blobUri
= fileView.DataKeys[index].Value.ToString();

                
//Get the container
                var blob
= _BlobContainer.GetBlobReference(blobUri);
                blob.DeleteIfExists();
            }
            
//更新列表
            DisplayFileList();
        }

  在点击“删除 Delete”的时候,将删除选中的Blob,调用了blob.DeleteIfExists(),注意在使用Blob对象时,首先要使用Container的GetBlobReference方法来获取到Blob对象。

  第三步:配置应用程序

  配置应用程序有两种方法,一种是直接修改服务定义文件:ServiceDefinition.csdef,服务配置文件ServiceConfiguration.cscfg;另一种是使用UI来直接配置。不管使用哪种方法,其最终的结果是一样的。在这里我们来使用第二种方法,添加配置节BlobConnectionString。

  打开DemoStorageBlob下的Roles文件夹,双击BlobWebRole,打开“设置 Settings”页面,添加BlobConnectionString,如图9所示:

 开发步骤:配置应用程序置运行调试环境

 图9 添加BlobConnectionString

  添加完后,我们的服务定义文件自动发生了修改:

<ConfigurationSettings>
      
<Setting name="BlobConnectionString" />
    
</ConfigurationSettings>
服务配置文件也同样发生了修改
    
<ConfigurationSettings>
      
<Setting name="BlobConnectionString" value="UseDevelopmentStorage=true" />
    
</ConfigurationSettings>

        服务配置文件也同样发生了修改

  第四步:设置运行调试环境

  配置完成后,编译应用程序,保证没有编译错误的情况,我们要进行调试运行程序之前的设置工作,设置工作主要是Development Fabric和Storage,设置项目的启动项和起始页。

  首先需要设置DemoStorageBlob为启动项目,如图10所示:

 开发步骤:配置应用程序置运行调试环境

图10 设置启动项目

0
相关文章