第五步:
在 Blob 中写入文件的方法。
private void SaveFileToCloud(string id, string description, string fileName, string contentType, byte[] data,string size)
{
//BlobProperties类,顾名思义,Blob的属性集
BlobProperties properties = new BlobProperties(string.Format(CultureInfo.InvariantCulture, "file_{0}", id));
//每个Blob都可以附带一些自定义属性(Metadata)。//此例中,我们先随意附上Id,OrdinaryFileName,Description这三组属性。
NameValueCollection metadata = new NameValueCollection();
metadata[Server.UrlEncode( "资源编号(新文件名)")] = id;
metadata[Server.UrlEncode( "原始文件名")] =Server.UrlEncode( fileName);
metadata[Server.UrlEncode( "描述")] = Server.UrlEncode(String.IsNullOrEmpty(description) ? "null" : description);
metadata[Server.UrlEncode( "文件大小")] = size;
metadata[Server.UrlEncode("上传时间")] = DateTime.Now.ToString();
properties.Metadata = metadata;
properties.ContentType = contentType;
//BlobContents即Blob内容,以byte[]的形式传入
BlobContents fileBlob = new BlobContents(data);
//省去REST的麻烦,直接调用CreateBlob方法。需要传入的参数:Blob属性集、Blob内容、是否覆盖同名
container.CreateBlob(properties, fileBlob, true);
}
{
//BlobProperties类,顾名思义,Blob的属性集
BlobProperties properties = new BlobProperties(string.Format(CultureInfo.InvariantCulture, "file_{0}", id));
//每个Blob都可以附带一些自定义属性(Metadata)。//此例中,我们先随意附上Id,OrdinaryFileName,Description这三组属性。
NameValueCollection metadata = new NameValueCollection();
metadata[Server.UrlEncode( "资源编号(新文件名)")] = id;
metadata[Server.UrlEncode( "原始文件名")] =Server.UrlEncode( fileName);
metadata[Server.UrlEncode( "描述")] = Server.UrlEncode(String.IsNullOrEmpty(description) ? "null" : description);
metadata[Server.UrlEncode( "文件大小")] = size;
metadata[Server.UrlEncode("上传时间")] = DateTime.Now.ToString();
properties.Metadata = metadata;
properties.ContentType = contentType;
//BlobContents即Blob内容,以byte[]的形式传入
BlobContents fileBlob = new BlobContents(data);
//省去REST的麻烦,直接调用CreateBlob方法。需要传入的参数:Blob属性集、Blob内容、是否覆盖同名
container.CreateBlob(properties, fileBlob, true);
}
注意:metadata[] 的 name 和 value 均不支持中文。如果需要引入中文的 metadata,我采用的方法是对所有的 name 和 value 进行 UrlEncode,在页面显示的时候再 UrlDecode。
如:
metadata[Server.UrlEncode( "原始文件名")] =Server.UrlEncode( fileName);
第六步:
删除云端文件的方法:
if (this.container.DoesBlobExist(blobName))//如果文件存在
{
this.container.DeleteBlob(blobName); //删除之
}
{
this.container.DeleteBlob(blobName); //删除之
}
同样是使用 BlobContainer 类中的方法,非常容易。