Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2449 / 261 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Специальности: Программист, Архитектор программного обеспечения
Самостоятельная работа 6:
Работа с Windows Azure Blob
Задание 4 Копирование сущностей
Копирование бинарных объектов также поддерживается Windows Azure. В рамках данного задания мы рассмотрим этот механизм.
Для формирования кнопки "Копировать" в списке имеющихся изображений, добавим следующий asp - код для lv_images :
...
<div class="item">
<ul style="width:40em;float:left;clear:left" >
<asp:Repeater ID="blobMetadata" runat="server">
<ItemTemplate>
<li><%# Eval("Name") %><span><%# Eval("Value") %></span></li>
</ItemTemplate>
</asp:Repeater>
<li>
...
<asp:LinkButton ID="CopyBlob"
OnClientClick="return confirm('Copy image?');"
CommandName="Copy"
CommandArgument='<%# Eval("Uri")%>'
runat="server" Text="Copy" oncommand="OnCopyImage" />
...Как и в предыдущем задании, создадим метод OnCopyImage:
protected void OnCopyImage(object sender, CommandEventArgs e)
{
if (e.CommandName == "Copy")
{
// Prepare an Id for the copied blob
var newId = Guid.NewGuid();
// получение исходного объекта
var blobUri = (string)e.CommandArgument;
var srcBlob = this.GetContainer().GetBlobReference(blobUri);
// создание нового бинарного объекта
var newBlob = this.GetContainer().GetBlobReference(newId.ToString());
// копирование содержимого исходного объекта
newBlob.CopyFromBlob(srcBlob);
// получаем метаданные для нового объекта
newBlob.FetchAttributes(new BlobRequestOptions { BlobListingDetails = BlobListingDetails.Metadata });
// изменение метаданных нового объекта, чтобы показать, что это копия
newBlob.Metadata["ImageName"] = "Copy of \"" + newBlob.Metadata["ImageName"]
+ "\"";
newBlob.Metadata["Id"] = newId.ToString();
newBlob.SetMetadata();
RefreshGallery();
}
}Проверим функционал:
В случае, если выполнение задания вызвало сложности и затруднения, в приложениях к данной практической работе вы найдете итоговый программный код в том виде, в котором он необходим для последнего задания.
