示例#1
0
        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));
        }
示例#2
0
        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);
        }