protected void SignButton_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { InitializeStorage( ); //Subo la imagen al Blob Storage CloudBlobContainer container = blobStorage.GetContainerReference("fotogolpics"); string uniqueBlobName = string.Format("image_{0}.jpg", Guid.NewGuid( ).ToString( )); CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName); blob.Properties.ContentType = FileUpload1.PostedFile.ContentType; blob.UploadFromStream(FileUpload1.FileContent); System.Diagnostics.Trace.TraceInformation("Uploaded image '{0}' to blob storage as '{1}'", FileUpload1.FileName, uniqueBlobName); //Creo un nuevo registro en la tabla FotoGolEntry entry = new FotoGolEntry( ) { GuestName = NameTextBox.Text, Message = MessageTextBox.Text, PhotoUrl = blob.Uri.ToString( ), ThumbnailUrl = blob.Uri.ToString( ) }; FotoGolEntryDataSource ds = new FotoGolEntryDataSource( ); ds.AddGuestBookEntry(entry); System.Diagnostics.Trace.TraceInformation("Added entry {0}-{1} in table storage for guest '{2}'", entry.PartitionKey, entry.RowKey, entry.GuestName); //Pongo un mensaje en cola para que se procese var queue = queueStorage.GetQueueReference("fotogolthumbs"); var message = new CloudQueueMessage(String.Format("{0},{1},{2}", uniqueBlobName, entry.PartitionKey, entry.RowKey)); queue.AddMessage(message); System.Diagnostics.Trace.TraceInformation("Queued message to process blob '{0}'", uniqueBlobName); } NameTextBox.Text = ""; MessageTextBox.Text = ""; DataList1.DataBind( ); }
public override void Run( ) { Trace.TraceInformation("Listening for queue messages..."); while (true) { try { CloudQueueMessage msg = queue.GetMessage( ); if (msg != null) { string[] messageParts = msg.AsString.Split(new char[] { ',' }); string uri = messageParts[0]; string partitionKey = messageParts[1]; string rowkey = messageParts[2]; Trace.TraceInformation("Processing image in blob '{0}'.", new object[] { uri }); CloudBlockBlob imageBlob = container.GetBlockBlobReference(uri); MemoryStream image = new MemoryStream( ); imageBlob.DownloadToStream(image); image.Seek(0L, SeekOrigin.Begin); string thumbnailUri = Path.GetFileNameWithoutExtension(uri) + "_thumb.jpg"; CloudBlockBlob thumbnailBlob = container.GetBlockBlobReference(thumbnailUri); thumbnailBlob.UploadFromStream(CreateThumbnail(image)); var dataSource = new FotoGolEntryDataSource( ); dataSource.UpdateImageThumbnail(partitionKey, rowkey, thumbnailBlob.Uri.AbsoluteUri); queue.DeleteMessage(msg); Trace.TraceInformation("Generated thumbnail in blob '{0}'.", new object[] { thumbnailBlob.Uri }); } else { Thread.Sleep(0x3e8); } } catch (StorageClientException e) { Trace.TraceError("Exception when processing queue item. Message: '{0}'", e.Message); System.Threading.Thread.Sleep(5000); } } }
public override void Run() { Trace.WriteLine("FotoGol_Email entry point called", "Information"); InitializeStorage(); while (true) { Thread.Sleep(10000); Trace.WriteLine("Working", "Information"); var list = MailGetter.GetPhotoData(true); foreach (var item in list) { //Subo la imagen al Blob Storage CloudBlobContainer container = blobStorage.GetContainerReference("fotogolpics"); string uniqueBlobName = string.Format("image_{0}.jpg", Guid.NewGuid().ToString()); CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName); //blob.Properties.ContentType = item.ImageType; blob.UploadFromStream(new MemoryStream(item.Data)); System.Diagnostics.Trace.TraceInformation("Uploaded image '{0}' to blob storage as '{1}'", item.FileName, uniqueBlobName); //Creo un registro en la tabla FotoGolEntry entry = new FotoGolEntry() { GuestName = item.From, Message = item.Title, PhotoUrl = blob.Uri.ToString(), ThumbnailUrl = blob.Uri.ToString() }; FotoGolEntryDataSource ds = new FotoGolEntryDataSource(); ds.AddGuestBookEntry(entry); System.Diagnostics.Trace.TraceInformation("Added entry {0}-{1} in table storage for guest '{2}'", entry.PartitionKey, entry.RowKey, entry.GuestName); //Pongo un mensaje para procesar var queue = queueStorage.GetQueueReference("fotogolthumbs"); var message = new CloudQueueMessage(String.Format("{0},{1},{2}", uniqueBlobName, entry.PartitionKey, entry.RowKey)); queue.AddMessage(message); System.Diagnostics.Trace.TraceInformation("Queued message to process blob '{0}'", uniqueBlobName); } } }