在这里使用cloudBlob.FetchAttributes()来获取Blob的属性或者元数据,把查询出来的ImageEntity实体结合绑定到GridView上去,这样我们在列表里就能看到有哪些Blob的数据。
/// 上传
/// </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”进去。
{
//删除
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
添加完后,我们的服务定义文件自动发生了修改:
<Setting name="BlobConnectionString" />
</ConfigurationSettings>
服务配置文件也同样发生了修改
<ConfigurationSettings>
<Setting name="BlobConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
服务配置文件也同样发生了修改
第四步:设置运行调试环境
配置完成后,编译应用程序,保证没有编译错误的情况,我们要进行调试运行程序之前的设置工作,设置工作主要是Development Fabric和Storage,设置项目的启动项和起始页。
首先需要设置DemoStorageBlob为启动项目,如图10所示:

图10 设置启动项目