public ActionResult UploadPicture(UploadImageFile image) { var f = Request.Files[0]; bool success = false; string urlSuffix = image.TripUserId + DateTime.Now.ToString() + ".jpg"; string bucket = "trip-app-pictures"; double lat = 0; double lon = 0; try { IAmazonS3 client = new AmazonS3Client("AKIAJWFD6TJO7NXPGCOA", "0MiV/p3r411kt9L5PE/Lwwg1n/2VLzbwXgRXIZLk", Amazon.RegionEndpoint.USEast1); // get lat lon if (!String.IsNullOrEmpty(image.Location)) { if (image.UseCurrentLocation) { var latlon = image.Location.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); lat = Convert.ToDouble(latlon[0]); lon = Convert.ToDouble(latlon[1]); } else if (!String.IsNullOrEmpty(image.Location)) { var address = image.Location; var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address)); var georequest = WebRequest.Create(requestUri); var response = georequest.GetResponse(); var xdoc = XDocument.Load(response.GetResponseStream()); var result = xdoc.Element("GeocodeResponse").Element("result"); var locationElement = result.Element("geometry").Element("location"); lat = Convert.ToDouble(locationElement.Element("lat").Value); lon = Convert.ToDouble(locationElement.Element("lng").Value); } } if (!String.IsNullOrEmpty(image.Description) && !String.IsNullOrEmpty(image.TripUserId) && f.InputStream != null) { var request = new PutObjectRequest() { BucketName = bucket, CannedACL = S3CannedACL.PublicRead, Key = string.Format(urlSuffix), InputStream = f.InputStream }; client.PutObject(request); success = true; } } catch (Exception ex) { success = false; } if (success) { TripAppEntities entities = new TripAppEntities(); var user = entities.TripUsers.Where(r => r.TripCode == image.TripUserId).FirstOrDefault(); var url = "https://s3.amazonaws.com/trip-app-pictures/" + urlSuffix; TripPicture picture = new TripPicture(); picture.TripUserId = user.Id; picture.Description = image.Description; picture.Date = DateTime.Now; picture.PictureUrl = url; picture.LocationName = !image.UseCurrentLocation ? image.Location : null; picture.Lat = lat; picture.Lon = lon; entities.TripPictures.Add(picture); entities.SaveChanges(); } return(RedirectToAction("../Trip/Pictures/" + image.TripUserId)); }
public ActionResult UploadPicture(UploadImageFile image) { var f = Request.Files[0]; bool success = false; string urlSuffix = image.TripUserId + DateTime.Now.ToString() + ".jpg" ; string bucket = "trip-app-pictures"; double lat = 0; double lon = 0; try { IAmazonS3 client = new AmazonS3Client("AKIAJWFD6TJO7NXPGCOA", "0MiV/p3r411kt9L5PE/Lwwg1n/2VLzbwXgRXIZLk", Amazon.RegionEndpoint.USEast1); // get lat lon if (!String.IsNullOrEmpty(image.Location)) { if (image.UseCurrentLocation) { var latlon = image.Location.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); lat = Convert.ToDouble(latlon[0]); lon = Convert.ToDouble(latlon[1]); } else if (!String.IsNullOrEmpty(image.Location)) { var address = image.Location; var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address)); var georequest = WebRequest.Create(requestUri); var response = georequest.GetResponse(); var xdoc = XDocument.Load(response.GetResponseStream()); var result = xdoc.Element("GeocodeResponse").Element("result"); var locationElement = result.Element("geometry").Element("location"); lat = Convert.ToDouble( locationElement.Element("lat").Value ); lon = Convert.ToDouble( locationElement.Element("lng").Value ); } } if (!String.IsNullOrEmpty(image.Description) && !String.IsNullOrEmpty(image.TripUserId) && f.InputStream != null) { var request = new PutObjectRequest() { BucketName = bucket, CannedACL = S3CannedACL.PublicRead, Key = string.Format(urlSuffix), InputStream = f.InputStream }; client.PutObject(request); success = true; } } catch (Exception ex) { success = false; } if (success) { TripAppEntities entities = new TripAppEntities(); var user = entities.TripUsers.Where(r => r.TripCode == image.TripUserId).FirstOrDefault(); var url = "https://s3.amazonaws.com/trip-app-pictures/" + urlSuffix; TripPicture picture = new TripPicture(); picture.TripUserId = user.Id; picture.Description = image.Description; picture.Date = DateTime.Now; picture.PictureUrl = url; picture.LocationName = !image.UseCurrentLocation ? image.Location : null; picture.Lat = lat; picture.Lon = lon; entities.TripPictures.Add(picture); entities.SaveChanges(); } return RedirectToAction("../Trip/Pictures/" + image.TripUserId); }