/// <summary> /// Delete an image by ImageId. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OnDeleteImage(object sender, CommandEventArgs e) { try { if (e.CommandName == "Delete") { Int32 imageId = Int32.Parse(e.CommandArgument as String); if (String.IsNullOrEmpty(this.selectedValue) || this.selectedValue.Equals(BLOB)) { ImageInBlob deletedImage = (from i in imagesDb.BlobImages where i.ImageId == imageId select i).FirstOrDefault(); if (deletedImage != null) { // Delete an blob by uri. var blob = this.GetContainer().GetBlobReference(deletedImage.BlobUri); blob.DeleteIfExists(); imagesDb.BlobImages.Remove(deletedImage); imagesDb.SaveChanges(); } } else if (this.selectedValue.Equals(SQL)) { ImagesTable deletedImage = (from i in imagesDb.ImagesTable where i.ImageId == imageId select i).FirstOrDefault(); if (deletedImage != null) { ImageInSQLAzure deletedImageInfo = deletedImage.ImageInfo; imagesDb.SQLAzureImages.Remove(deletedImageInfo); imagesDb.ImagesTable.Remove(deletedImage); imagesDb.SaveChanges(); } } } } catch (StorageClientException se) { this.status.Text = "Storage client error: " + se.Message; } catch (Exception) { } this.RefreshGallery(); }
/// <summary> /// Set the uri of images. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OnDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { Image img = e.Item.FindControl("img") as Image; // According to the choose of location, we set the uri of image. if (String.IsNullOrEmpty(this.selectedValue) || this.selectedValue.Equals(BLOB)) { ImageInBlob image = e.Item.DataItem as ImageInBlob; img.ImageUrl = image.BlobUri; } else if (this.selectedValue.Equals(SQL)) { ImageInSQLAzure image = e.Item.DataItem as ImageInSQLAzure; img.ImageUrl = "GetImage.ashx?ImageId=" + image.ImageId; } } }
/// <summary> /// Save the images to the location /// </summary> /// <param name="name">It's the name that user inputs.</param> /// <param name="description">It's the description that user inputs.</param> /// <param name="fileName">It's the name of the file.</param> /// <param name="contentType">It's the type of the file.</param> /// <param name="data">It's the content of the file</param> private void SaveImage(string name, string description, string fileName, string contentType, byte[] data) { // Store the images to the Blob and SQL Azure by the choose of the location. if (this.selectedValue.Equals(BLOB)) { name = string.IsNullOrEmpty(name) ? "unknown" : name; var blob = this.GetContainer().GetBlobReference(name); blob.Properties.ContentType = contentType; ImageInBlob newImage = new ImageInBlob(); newImage.FileName = fileName; newImage.ImageName = name; newImage.Description = string.IsNullOrEmpty(description) ? "unknown" : description; blob.UploadByteArray(data); newImage.BlobUri = blob.Uri.ToString(); imagesDb.BlobImages.Add(newImage); imagesDb.SaveChanges(); } else if (this.selectedValue.Equals(SQL)) { ImageInSQLAzure newImageInfo = new ImageInSQLAzure(); ImagesTable newImage = new ImagesTable(); newImageInfo.FileName = fileName; newImageInfo.ImageName = string.IsNullOrEmpty(name) ? "unknown" : name; newImageInfo.Description = string.IsNullOrEmpty(description) ? "unknown" : description; newImage.ImageInfo = newImageInfo; newImage.ImageData = data; imagesDb.SQLAzureImages.Add(newImageInfo); imagesDb.ImagesTable.Add(newImage); imagesDb.SaveChanges(); } }
/// <summary> /// Copy an image by ImageId /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OnCopyImage(object sender, CommandEventArgs e) { if (e.CommandName == "Copy") { Int32 imageId = Int32.Parse(e.CommandArgument as String); if (String.IsNullOrEmpty(this.selectedValue) || this.selectedValue.Equals(BLOB)) { ImageInBlob copiedImage = (from i in imagesDb.BlobImages where i.ImageId == imageId select i).FirstOrDefault(); if (copiedImage != null) { var srcBlob = this.GetContainer().GetBlobReference(copiedImage.BlobUri); String newImageName = "Copy of \"" + copiedImage.ImageName + "\""; var newBlob = this.GetContainer().GetBlobReference(Guid.NewGuid().ToString()); // Copy content from source blob newBlob.CopyFromBlob(srcBlob); // Copy the info of image. ImageInBlob newImage = new ImageInBlob(); newImage.FileName = copiedImage.FileName; newImage.ImageName = newImageName; newImage.Description = copiedImage.Description; newImage.BlobUri = newBlob.Uri.ToString(); imagesDb.BlobImages.Add(newImage); imagesDb.SaveChanges(); this.RefreshGallery(); } } else if (this.selectedValue.Equals(SQL)) { ImagesTable copiedImage = (from i in imagesDb.ImagesTable where i.ImageId == imageId select i).FirstOrDefault(); if (copiedImage != null) { ImageInSQLAzure copiedImageInfo = copiedImage.ImageInfo; ImagesTable newImage = new ImagesTable(); ImageInSQLAzure newImageInfo = new ImageInSQLAzure(); // Copy the info of image. newImageInfo.FileName = copiedImageInfo.FileName; newImageInfo.ImageName = "Copy of \"" + copiedImageInfo.ImageName + "\""; newImageInfo.Description = copiedImageInfo.Description; newImage.ImageData = copiedImage.ImageData; newImage.ImageInfo = newImageInfo; imagesDb.SQLAzureImages.Add(newImageInfo); imagesDb.ImagesTable.Add(newImage); imagesDb.SaveChanges(); this.RefreshGallery(); } } } }