Exemplo n.º 1
0
        public ActionResult <AddObjectResponse> Post(AddObject request)
        {
            AddObjectResponse ret = new AddObjectResponse();

            foreach (var it in request.Items)
            {
                it.Generation = DateTime.Now;
            }
            host.Connection.Insert(GXInsertArgs.InsertRange(request.Items));
            host.SetChange(TargetType.Object, DateTime.Now);
            ret.Ids = new UInt64[request.Items.Length];
            int pos = 0;

            foreach (var it in request.Items)
            {
                ret.Ids[pos] = it.Id;
                ++pos;
            }
            return(ret);
        }
Exemplo n.º 2
0
        public static void Upload(Stream stream, String objectName)
        {
            S3Service service = GetService();

            long len = stream.Position;

            stream.Seek(0, SeekOrigin.Begin);

            AddObjectRequest req = new AddObjectRequest(service, Program.Config.BucketName, objectName)
            {
                CannedAcl     = CannedAcl.PublicRead,
                ContentType   = "image/" + Program.Config.ImageType,
                ContentLength = len
            };

            IAsyncResult uploadAsync = req.BeginGetRequestStream(a =>
            {
                using (Stream outStream = req.EndGetRequestStream(a))
                {
                    try
                    {
                        var buffer   = new byte[len > 65536 ? 65536 : len];
                        var position = 0;
                        while (position < stream.Length)
                        {
                            var read = stream.Read(buffer, 0, buffer.Length);
                            outStream.Write(buffer, 0, read);
                            position += read;
                        }
                        outStream.Flush();

                        stream.Close();
                        stream.Dispose();
                        stream = null;
                        buffer = null;

                        using (AddObjectResponse response = req.GetResponse())
                        {
                            string url = null;
                            if (Program.Config.CloudFront != null && Program.Config.CloudFront.Length > 0)
                            {
                                url = "http://" + Program.Config.CloudFront + "/" + objectName;
                            }
                            else
                            {
                                url = "http://" + Program.Config.Region + "/" + Program.Config.BucketName + "/" + objectName;
                            }
                            FormMain.DefaultInstance.Invoke((MethodInvoker) delegate
                            {
                                FormMain.DefaultInstance.UploadComplete(url);
                            });
                        }
                    }
                    catch (Exception e)
                    {
                        FormMain.DefaultInstance.Invoke((MethodInvoker) delegate
                        {
                            FormMain.DefaultInstance.UploadFailed();
                        });
                    }
                    finally
                    {
                        //GC.Collect();
                    }
                }
            }, null);
        }