Загрузка Blob данных в хранилище 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Загрузка Blob данных в хранилище



  1. Откройте Default.aspx.cs
  2. Добавьте метод в конец страницы

3. private void SaveImage(string id, string name, string description,

4. string tags, string fileName, string contentType, byte[] data)

5. {

6. // Create a blob in container and upload image bytes to it

7. var blob = this.GetContainer().GetBlobReference(name);

8.

9. blob.Properties.ContentType = contentType;

10.

11. // Create some metadata for this image

12. var metadata = new NameValueCollection();

13. metadata["Id"] = id;

14. metadata["Filename"] = fileName;

15. metadata["ImageName"] = String.IsNullOrEmpty(name)? "unknown": name;

16. metadata["Description"] = String.IsNullOrEmpty(description)? "unknown": description;

17. metadata["Tags"] = String.IsNullOrEmpty(tags)? "unknown": tags;

18.

19. // Add and commit metadata to blob

20. blob.Metadata.Add(metadata);

21. blob.UploadByteArray(data);

}

  1. Измените метод upload_Click

23.protected void upload_Click(object sender, EventArgs e)

24. {

25. if (imageFile.HasFile)

26. {

27. status.Text = "Inserted [" + imageFile.FileName + "] -

28. Content Type [" + imageFile.PostedFile.ContentType + "] -

29. Length [" + imageFile.PostedFile.ContentLength + "]";

30.

31. this.SaveImage(

32. Guid.NewGuid().ToString(),

33. imageName.Text,

34. imageDescription.Text,

35. imageTags.Text,

36. imageFile.FileName,

37. imageFile.PostedFile.ContentType,

38. imageFile.FileBytes

39.);

40.

41. RefreshGallery();

42. }

43. else

44. status.Text = "No image file";

}

  1. Нажмите F5 для запуска приложения
  2. Введете метаданные Name, Description и Tags. Для выбора изображения нажмите Browse

 

 

  1. Нажмите Upload Image для публикации изображения в веб приложении

 

 

Извлечение метаданных для Blob в хранилище

  1. Откройте Default.aspx в режиме Design, выберите контрол imagesListView и в окне свойств нажмите кнопку Events

 

 

  1. Найдите метод OnBlobDataBound и вставьте следующий код

3. protected void OnBlobDataBound(object sender, ListViewItemEventArgs e)

4. {

5. if (e.Item.ItemType == ListViewItemType.DataItem)

6. {

7. var metadataRepeater = e.Item.FindControl("blobMetadata") as Repeater;

8. var blob = ((ListViewDataItem)(e.Item)).DataItem as CloudBlob;

9.

10. // If this blob is a snapshot, rename button to "Delete Snapshot"

11. if (blob!= null)

12. {

13. if(blob.SnapshotTime.HasValue)

14. {

15. var delBtn = e.Item.FindControl("deleteBlob") as LinkButton;

16. if (delBtn!= null) delBtn.Text = "Delete Snapshot";

17.

18. var snapshotBtn = e.Item.FindControl("SnapshotBlob") as LinkButton;

19. if (snapshotBtn!= null) snapshotBtn.Visible = false;

20. }

21.

22. if (metadataRepeater!= null)

23. {

24. //bind to metadata

25. metadataRepeater.DataSource = from key in blob.Metadata.AllKeys

26. select new

27. {

28. Name = key,

29. Value = blob.Metadata[key]

30. };

31. metadataRepeater.DataBind();

32. }

33. }

34. }

}

  1. Нажмите F5 для запуска приложения. Убедитесь что отображаются метаданные для изображения, загруженного ранее

 

 

Удаление Blob из хранилища

  1. Откройте Default.aspx в режиме Source, найдте ItemTemplate для контрола asp:ListView. Раскомментируйте код, следующий за контролом blobMetadata

2. <div class="item">

3. <ul style="width:40em;float:left;clear:left" >

4. <asp:Repeater ID="blobMetadata" runat="server">

5. <ItemTemplate>

6. <%# Eval("Name") %><span><%# Eval("Value") %></span>

7. </ItemTemplate>

8. </asp:Repeater>

9.

10. <asp:LinkButton ID="deleteBlob"

11. OnClientClick="return confirm('Delete image?');"

12. CommandName="Delete"

13. CommandArgument='<%# Eval("Uri")%>'

14. runat="server" Text="Delete" oncommand="OnDeleteImage" />

15.

16. </ul>

17. <img src="<%# Eval("Uri") %>" alt="<%# Eval("Uri") %>" style="float:left"/>

</div>

  1. Добавьте следующий код в файл Default.aspx.cs

19.protected void OnDeleteImage(object sender, CommandEventArgs e)

20. {

21. try

22. {

23. if (e.CommandName == "Delete")

24. {

25. var blobUri = (string)e.CommandArgument;

26. var blob = this.GetContainer().GetBlobReference(blobUri);

27.

28. blob.DeleteIfExists();

29.

30. RefreshGallery();

31. }

32. }

33. catch (StorageClientException se)

34. {

35. status.Text = "Storage client error: " + se.Message;

36. }

37. catch (Exception) { }

}

  1. Нажмите F5 для запуска приложения
  2. Добавьте еще несколько изображений и нажмите Delete на любом из изображений

 

 

Копирование Blob

  1. Откройте Default.aspx в режиме Source, найдте ItemTemplate для контрола asp:ListView. Раскомментируйте следующий код

2. <div class="item">

3. <ul style="width:40em;float:left;clear:left" >

4. <asp:Repeater ID="blobMetadata" runat="server">

5. <ItemTemplate>

6. <%# Eval("Name") %><span><%# Eval("Value") %></span>

7. </ItemTemplate>

8. </asp:Repeater>

9.

10. <asp:LinkButton ID="deleteBlob"

11. OnClientClick="return confirm('Delete image?');"

12. CommandName="Delete"

13. CommandArgument='<%# Eval("Uri")%>'

14. runat="server" Text="Delete" oncommand="OnDeleteImage" />

15. <asp:LinkButton ID="CopyBlob"

16. OnClientClick="return confirm('Copy image?');"

17. CommandName="Copy"

18. CommandArgument='<%# Eval("Uri")%>'

19. runat="server" Text="Copy" oncommand="OnCopyImage" />

20.

21.

22. </ul>

23. <img src="<%# Eval("Uri") %>" alt="<%# Eval("Uri") %>" style="float:left"/>

</div>

  1. Добавьте в файл Default.aspx.cs

25.protected void OnCopyImage(object sender, CommandEventArgs e)

26. {

27. if (e.CommandName == "Copy")

28. {

29. // Prepare an Id for the copied blob

30. var newId = Guid.NewGuid();

31.

32. // Get source blob

33. var blobUri = (string)e.CommandArgument;

34. var srcBlob = this.GetContainer().GetBlobReference(blobUri);

35.

36. // Create new blob

37. var newBlob = this.GetContainer().GetBlobReference(newId.ToString());

38.

39. // Copy content from source blob

40. newBlob.CopyFromBlob(srcBlob);

41.

42. // Explicitly get metadata for new blob

43. newBlob.FetchAttributes(new BlobRequestOptions{BlobListingDetails = BlobListingDetails.Metadata});

44.

45. // Change metadata on the new blob to reflect this is a copy via UI

46. newBlob.Metadata["ImageName"] = "Copy of \"" + newBlob.Metadata["ImageName"] + "\"";

47. newBlob.Metadata["Id"] = newId.ToString();

48. newBlob.SetMetadata();

49.

50. // Render all blobs

51. RefreshGallery();

52. }

}

  1. Нажмите F5 для запуска приложения
  2. Добавьте еще несколько изображений и нажмите Copy на любом из изображений

 

 

Получение снимков Blob

  1. Откройте Default.aspx в режиме Source, найдте ItemTemplate для контрола asp:ListView. Раскомментируйте следующий код

2. <div class="item">

3. <ul style="width:40em;float:left;clear:left" >

4. <asp:Repeater ID="blobMetadata" runat="server">

5. <ItemTemplate>

6. <%# Eval("Name") %><span><%# Eval("Value") %></span>

7. </ItemTemplate>

8. </asp:Repeater>

9.

10. <asp:LinkButton ID="deleteBlob"

11. OnClientClick="return confirm('Delete image?');"

12. CommandName="Delete"

13. CommandArgument='<%# Eval("Uri")%>'

14. runat="server" Text="Delete" oncommand="OnDeleteImage" />

15. <asp:LinkButton ID="CopyBlob"

16. OnClientClick="return confirm('Copy image?');"

17. CommandName="Copy"

18. CommandArgument='<%# Eval("Uri")%>'

19. runat="server" Text="Copy" oncommand="OnCopyImage" />

20. <asp:LinkButton ID="SnapshotBlob"

21. OnClientClick="return confirm('Snapshot image?');"

22. CommandName="Snapshot"

23. CommandArgument='<%# Eval("Uri")%>'

24. runat="server" Text="Snapshot" oncommand="OnSnapshotImage" />

25.

26. </ul>

27. <img src="<%# Eval("Uri") %>" alt="<%# Eval("Uri") %>" style="float:left"/>

</div>

  1. В файл Default.aspx.cs добавьте

29.protected void OnSnapshotImage(object sender, CommandEventArgs e)

30. {

31. if (e.CommandName == "Snapshot")

32. {

33. // Get source blob

34. var blobUri = (string) e.CommandArgument;

35. var srcBlob = this.GetContainer().GetBlobReference(blobUri);

36.

37. // Create a snapshot

38. var snapshot = srcBlob.CreateSnapshot();

39.

40. status.Text = "A snapshot has been taken for image blob:" + srcBlob.Uri + " at " + snapshot.SnapshotTime;

41.

42. RefreshGallery();

43. }

}

  1. Нажмите F5 для запуска приложения
  2. Нажмите Snapshot на любом из изображений

 

 



Поделиться:


Последнее изменение этой страницы: 2016-12-12; просмотров: 223; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.246.254 (0.026 с.)