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); }
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); }