コード例 #1
0
        public async Task ListIncompleteParts()
        {
            await CreateTempBucketAsync(async bucket =>
            {
                InitiateMultipartUploadResponse initResp = await ObjectClient.InitiateMultipartUploadAsync(bucket, nameof(ListIncompleteParts)).ConfigureAwait(false);

                byte[] file = new byte[5 * 1024];

                using (MemoryStream ms = new MemoryStream(file))
                    await ObjectClient.UploadPartAsync(bucket, nameof(ListIncompleteParts), 1, initResp.UploadId, ms).ConfigureAwait(false);

                ListMultipartUploadsResponse listResp = await BucketClient.ListMultipartUploadsAsync(bucket).ConfigureAwait(false);

                Assert.Equal(bucket, listResp.Bucket);
                Assert.Equal("ListIncompleteParts", listResp.NextKeyMarker);
                Assert.NotEmpty(listResp.NextUploadIdMarker);
                Assert.Equal(1000, listResp.MaxUploads);
                Assert.False(listResp.IsTruncated);

                S3Upload upload = Assert.Single(listResp.Uploads);

                Assert.Equal(listResp.NextKeyMarker, upload.Name);
                Assert.Equal(listResp.NextUploadIdMarker, upload.UploadId);
                Assert.Equal(TestConstants.TestUsername, upload.Initiator.Name);
                Assert.Equal(StorageClass.Standard, upload.StorageClass);
                Assert.Equal(DateTime.UtcNow, upload.Initiated.DateTime, TimeSpan.FromSeconds(5));
            }).ConfigureAwait(false);
        }
コード例 #2
0
        public async Task ListObjects()
        {
            await CreateTempBucketAsync(async bucket =>
            {
                //Create 3 objects in bucket, including an incomplete multipart upload
                await UploadAsync(bucket, "resource1").ConfigureAwait(false);
                await UploadAsync(bucket, "resource2").ConfigureAwait(false);
                InitiateMultipartUploadResponse initResp = await ObjectClient.InitiateMultipartUploadAsync(bucket, "multipart").ConfigureAwait(false);

                //List the objects
                List <S3Object> list = await BucketClient.GetBucketRecursiveAsync(bucket, true).ToListAsync().ConfigureAwait(false);

                //Only 2 objects should be present, as one of them is only initiated
                Assert.Equal(2, list.Count);
                Assert.Equal("resource1", list[0].Name);
                Assert.Equal("resource2", list[1].Name);

                //List multipart transfers
                List <S3Upload> uploads = await BucketClient.ListAllMultipartUploadsAsync(bucket).ToListAsync().ConfigureAwait(false);

                S3Upload upload = Assert.Single(uploads);

                Assert.Equal("multipart", upload.Name);
            }).ConfigureAwait(false);
        }
コード例 #3
0
        public async Task <IActionResult> FileUploadForm(FileUploadFormModal FileUpload)
        {
            using (var memoryStream = new MemoryStream())
            {
                await FileUpload.FormFile.CopyToAsync(memoryStream);

                // Upload the file if less than 2 MB
                if (memoryStream.Length < 2097152)
                {
                    string fileExtension = FileUpload.FormFile.FileName.Split(".")[1];

                    string randomId = Guid.NewGuid().ToString();

                    string fileName = randomId + "." + fileExtension;

                    await S3Upload.UploadFileAsync(memoryStream, "egyptexcavation", "photos/" + fileName);

                    string uploadUrl = "https://egyptexcavation.s3.amazonaws.com/photos/" + fileName;

                    //_recordService.SavePhotoUrl(FileUpload.BurialID, uploadUrl);
                }
                else
                {
                    ModelState.AddModelError("File", "The file is too large.");
                    return(View(FileUpload));
                }
            }

            return(View());
        }
コード例 #4
0
    // GET: S3Upload
    public ActionResult Index() {
      var fileStorageProvider = new AmazonS3FileStorageProvider();

      var fileUploadViewModel = new S3Upload (
        fileStorageProvider.PublicKey,
        fileStorageProvider.PrivateKey,
        fileStorageProvider.BucketName,
        Url.Action("complete", "home", null, Request.Url.Scheme)
      );

      fileUploadViewModel.SetPolicy (
        fileStorageProvider.GetPolicyString (
          fileUploadViewModel.FileId, 
          fileUploadViewModel.RedirectUrl
        )
      );


      ViewBag.FormAction = fileUploadViewModel.FormAction;
      ViewBag.FormMethod = fileUploadViewModel.FormMethod;
      ViewBag.FormEnclosureType = fileUploadViewModel.FormEnclosureType;
      ViewBag.AWSAccessKey = fileUploadViewModel.AWSAccessKey;
      ViewBag.Acl = fileUploadViewModel.Acl;
      ViewBag.Base64EncodedPolicy = fileUploadViewModel.Base64EncodedPolicy;
      ViewBag.Signature = fileUploadViewModel.Signature;

      var DroneDoc = new DroneDocument();
      return View(DroneDoc);

    }//ActionResult Index()
コード例 #5
0
        public async Task ListMultipartUploads()
        {
            await CreateTempBucketAsync(async bucket =>
            {
                string objName = nameof(ListMultipartUploads) + "%";

                CreateMultipartUploadResponse createResp = await MultipartClient.CreateMultipartUploadAsync(bucket, objName).ConfigureAwait(false);

                byte[] file = new byte[5 * 1024];

                using (MemoryStream ms = new MemoryStream(file))
                    await MultipartClient.UploadPartAsync(bucket, objName, 1, createResp.UploadId, ms).ConfigureAwait(false);

                ListMultipartUploadsResponse listResp = await MultipartClient.ListMultipartUploadsAsync(bucket, req => req.EncodingType = EncodingType.Url).ConfigureAwait(false);

                Assert.Equal(bucket, listResp.Bucket);
                Assert.Equal(WebUtility.UrlEncode(objName), listResp.NextKeyMarker);
                Assert.NotEmpty(listResp.NextUploadIdMarker);
                Assert.Equal(1000, listResp.MaxUploads);
                Assert.False(listResp.IsTruncated);

                S3Upload upload = Assert.Single(listResp.Uploads);

                Assert.Equal(listResp.NextKeyMarker, upload.ObjectKey);
                Assert.Equal(listResp.NextUploadIdMarker, upload.UploadId);
                Assert.Equal(StorageClass.Standard, upload.StorageClass);
                Assert.Equal(DateTime.UtcNow, upload.Initiated.DateTime, TimeSpan.FromSeconds(5));
            }).ConfigureAwait(false);
        }
コード例 #6
0
 // Raise the event
 protected virtual void OnS3Upload(string fileName)
 {
     //S3Upload(this, EventArgs.Empty);
     S3Upload?.Invoke(this, new UploadEventArgs()
     {
         FileName = fileName
     });
     // means 👇
     //if (S3Upload != null) // this is to ensure that if no subscriber is listening the event isn't raised
     //{
     //    S3Upload(this, new UploadEventArgs() { FileName = fileName });
     //}
 }
コード例 #7
0
        public async Task <IActionResult> FileUploadForm(FileUploadForm FileUpload)
        {
            using (var memoryStream = new MemoryStream())
            {
                await FileUpload.FormFile.CopyToAsync(memoryStream);

                // Upload the file if less than 2 MB
                if (memoryStream.Length < 2097152)
                {
                    await S3Upload.UploadFileAsync(memoryStream, "intex-fagelgamous", "AKIAVY5M47Y5S26WCNPL");
                }
                else


                {
                    ModelState.AddModelError("File", "The file is too large.");
                }
            }

            return(View());
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: jasonzhexinzou/CHProgram
        static void Main(string[] args)
        {
            S3Upload s3BLL   = new S3Upload();
            SendMail sendBLL = new SendMail();

            string TeplatePath = System.Configuration.ConfigurationManager.AppSettings["MailTemplatePath"].ToString() + "MailContent.html";
            string filePath    = System.Configuration.ConfigurationManager.AppSettings["FilePath"].ToString();
            //返回S3地址链接
            string S3Path = s3BLL.localFileS3Upload(filePath);


            byte[] buffer = File.ReadAllBytes(filePath);

            string mailSubject = "Hospital Data Synchronization Task Succeed";

            //string mailBody = "EXTERNAL<br/><br/><br/><br/>" +
            //                  "Hi Everyone,<br/><br/>" +
            //                  "Today hospital data synchronization task had been completed , please click link and download the attachment.<br/><br/>" +
            //                  "Download link:" + S3Path +
            //                  "<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;" +
            //                  "Best Regards<br/><br/>" +
            //                  "This is automatically sent by system. Please do not reply.<br/><br/>" +
            //                  "GSK monitors email communications sent to and from GSK in order to protect GSK, our employees, customers, suppliers and business partners, from cyber threats and loss of GSK Information. <br/>;" +
            //                  "GSK monitoring is conducted with appropriate confidentiality controls and in accordance with local laws and after appropriate consultation.";

            string mailBody = sendBLL.ReplaceText(TeplatePath, S3Path);

            //正式收件人
            string mailTo = System.Configuration.ConfigurationManager.AppSettings["MailToUser"].ToString();

            if (buffer.Length > 5242880)
            {
                sendBLL.AmazonSES(mailSubject, mailTo, mailBody, "");
            }
            else
            {
                sendBLL.AmazonSES(mailSubject, mailTo, mailBody, filePath);
            }
        }
コード例 #9
0
        public async Task <IActionResult> Create(ImageUploadViewModel viewModel)
        {
            string objectKey = $"Burials/{viewModel.fileForm.FileName}-{DateTime.Now.ToString()}";


            Image img = new Image
            {
                BurialId         = Convert.ToDecimal(viewModel.BurialId),
                ImagePodecimaler = S3Upload.GeneratePreSignedURL(objectKey),
                Burial           = _context.Burials.Where(x => x.BurialId == Convert.ToDecimal(viewModel.BurialId)).FirstOrDefault()
            };

            if (ModelState.IsValid)
            {
                _context.Add(img);
                await _context.SaveChangesAsync();

                //return RedirectToAction(nameof(Index));
            }
            ViewData["BurialId"] = new SelectList(_context.Burials, "BurialId", "BurialId", img.BurialId);

            using (var memoryStream = new MemoryStream())
            {
                await viewModel.fileForm.CopyToAsync(memoryStream);

                // Upload the file if less than 10 MB
                if (memoryStream.Length < 10485760)
                {
                    await S3Upload.UploadFileAsync(memoryStream, "arn:aws:s3:us-east-1:524546685232:accesspoint/is410", objectKey);
                }
                else
                {
                    ModelState.AddModelError("File", "The file is too large.");
                }
            }

            return(RedirectToAction("Details", "Burial", new { ID = viewModel.BurialId }));
        }
コード例 #10
0
        public ActionResult GCAApproval(int ID=0)

        {
            //to create gcaapproval
            if (!exLogic.User.hasAccess("FLIGHT.GCAAPPROVAL")) return RedirectToAction("NoAccess", "Home");
            var fileStorageProvider = new AmazonS3FileStorageProvider();

            var fileUploadViewModel = new S3Upload(
              fileStorageProvider.PublicKey,
              fileStorageProvider.PrivateKey,
              fileStorageProvider.BucketName,
              Url.Action("complete", "home", null, Request.Url.Scheme)
            );

            fileUploadViewModel.SetPolicy(
              fileStorageProvider.GetPolicyString(
                fileUploadViewModel.FileId,
                fileUploadViewModel.RedirectUrl
              )
            );


            ViewBag.FormAction = fileUploadViewModel.FormAction;
            ViewBag.FormMethod = fileUploadViewModel.FormMethod;
            ViewBag.FormEnclosureType = fileUploadViewModel.FormEnclosureType;
            ViewBag.AWSAccessKey = fileUploadViewModel.AWSAccessKey;
            ViewBag.Acl = fileUploadViewModel.Acl;
            ViewBag.Base64EncodedPolicy = fileUploadViewModel.Base64EncodedPolicy;
            ViewBag.Signature = fileUploadViewModel.Signature;

            var GCAApprovalDoc = new GCA_Approval();
            if (ID != 0)
            {
                GCAApprovalDoc.DroneID = ID;
            }

            if (ID != 0)
            {
                var olist = (from p in db.GCA_Approval where p.ApprovalID == ID select p).ToList();
                if (olist.Count > 0)
                {
                    GCAApprovalDoc.ApprovalID = olist[0].ApprovalID;
                    GCAApprovalDoc.DroneID = olist[0].DroneID;
                    GCAApprovalDoc.ApprovalName = olist[0].ApprovalName;
                    GCAApprovalDoc.Coordinates = olist[0].Coordinates;

                    GCAApprovalDoc.ApprovalDate = olist[0].ApprovalDate == null ? null : olist[0].ApprovalDate;
                    GCAApprovalDoc.StartDate = olist[0].StartDate == null ? null : olist[0].StartDate; 
                    GCAApprovalDoc.EndDate = olist[0].EndDate == null ? null : olist[0].EndDate;

                    GCAApprovalDoc.StartTime = olist[0].StartTime;
                    GCAApprovalDoc.EndTime = olist[0].EndTime;
                    GCAApprovalDoc.MinAltitude = olist[0].MinAltitude;

                    GCAApprovalDoc.MaxAltitude = olist[0].MaxAltitude;
                    GCAApprovalDoc.BoundaryInMeters = olist[0].BoundaryInMeters;
                }
            }
            return View(GCAApprovalDoc);

        }//ActionResult GCAApproval()
コード例 #11
0
        public void MarshalResponse(IConfig config, ListMultipartUploadsRequest request, ListMultipartUploadsResponse response, IDictionary <string, string> headers, Stream responseStream)
        {
            XmlSerializer s = new XmlSerializer(typeof(ListMultipartUploadsResult));

            using (XmlTextReader r = new XmlTextReader(responseStream))
            {
                r.Namespaces = false;

                ListMultipartUploadsResult listResult = (ListMultipartUploadsResult)s.Deserialize(r);

                if (listResult.EncodingType != null)
                {
                    response.EncodingType = ValueHelper.ParseEnum <EncodingType>(listResult.EncodingType);
                }

                response.KeyMarker          = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.KeyMarker) : listResult.KeyMarker;
                response.NextKeyMarker      = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.NextKeyMarker) : listResult.NextKeyMarker;
                response.Prefix             = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.Prefix) : listResult.Prefix;
                response.Delimiter          = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.Delimiter) : listResult.Delimiter;
                response.Bucket             = listResult.Bucket;
                response.UploadIdMarker     = listResult.UploadIdMarker;
                response.NextUploadIdMarker = listResult.NextUploadIdMarker;
                response.MaxUploads         = listResult.MaxUploads;
                response.IsTruncated        = listResult.IsTruncated;

                if (listResult.CommonPrefixes != null)
                {
                    response.CommonPrefixes = new List <string>(listResult.CommonPrefixes.Count);

                    foreach (CommonPrefix prefix in listResult.CommonPrefixes)
                    {
                        response.CommonPrefixes.Add(prefix.Prefix);
                    }
                }
                else
                {
                    response.CommonPrefixes = Array.Empty <string>();
                }

                if (listResult.Uploads != null)
                {
                    response.Uploads = new List <S3Upload>(listResult.Uploads.Count);

                    foreach (Upload listUpload in listResult.Uploads)
                    {
                        S3Upload s3Upload = new S3Upload();
                        s3Upload.ObjectKey = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listUpload.Key) : listUpload.Key;
                        s3Upload.UploadId  = listUpload.UploadId;

                        if (listUpload.StorageClass != null)
                        {
                            s3Upload.StorageClass = ValueHelper.ParseEnum <StorageClass>(listUpload.StorageClass);
                        }

                        s3Upload.Initiated = listUpload.Initiated;

                        if (listUpload.Owner != null)
                        {
                            s3Upload.Owner      = new S3Identity();
                            s3Upload.Owner.Name = listUpload.Owner.DisplayName;
                            s3Upload.Owner.Id   = listUpload.Owner.Id;
                        }

                        if (listUpload.Initiator != null)
                        {
                            s3Upload.Initiator      = new S3Identity();
                            s3Upload.Initiator.Name = listUpload.Initiator.DisplayName;
                            s3Upload.Initiator.Id   = listUpload.Initiator.Id;
                        }

                        response.Uploads.Add(s3Upload);
                    }
                }
                else
                {
                    response.Uploads = Array.Empty <S3Upload>();
                }
            }
        }
コード例 #12
0
        public void MarshalResponse(ListMultipartUploadsRequest request, ListMultipartUploadsResponse response, IDictionary <string, string> headers, Stream responseStream)
        {
            XmlSerializer s = new XmlSerializer(typeof(ListMultipartUploadsResult));

            using (XmlTextReader r = new XmlTextReader(responseStream))
            {
                r.Namespaces = false;

                ListMultipartUploadsResult listResult = (ListMultipartUploadsResult)s.Deserialize(r);
                response.Bucket             = listResult.Bucket;
                response.KeyMarker          = listResult.KeyMarker;
                response.UploadIdMarker     = listResult.UploadIdMarker;
                response.NextKeyMarker      = listResult.NextKeyMarker;
                response.NextUploadIdMarker = listResult.NextUploadIdMarker;

                if (listResult.EncodingType != null)
                {
                    response.EncodingType = EnumsNET.Enums.Parse <EncodingType>(listResult.EncodingType, EnumFormat.EnumMemberValue);
                }

                response.MaxUploads  = listResult.MaxUploads;
                response.IsTruncated = listResult.IsTruncated;
                response.Prefix      = listResult.Prefix;
                response.Delimiter   = listResult.Delimiter;

                if (listResult.CommonPrefixes != null)
                {
                    response.CommonPrefixes = new List <string>(listResult.CommonPrefixes.Count);

                    foreach (CommonPrefix prefix in listResult.CommonPrefixes)
                    {
                        response.CommonPrefixes.Add(prefix.Prefix);
                    }
                }
                else
                {
                    response.CommonPrefixes = Array.Empty <string>();
                }

                if (listResult.Uploads != null)
                {
                    response.Uploads = new List <S3Upload>(listResult.Uploads.Count);

                    foreach (Upload listUpload in listResult.Uploads)
                    {
                        S3Upload s3Upload = new S3Upload();
                        s3Upload.Name     = listUpload.Key;
                        s3Upload.UploadId = listUpload.UploadId;

                        if (listUpload.StorageClass != null)
                        {
                            s3Upload.StorageClass = EnumsNET.Enums.Parse <StorageClass>(listUpload.StorageClass, EnumFormat.EnumMemberValue);
                        }

                        s3Upload.Initiated = listUpload.Initiated;

                        if (listUpload.Owner != null)
                        {
                            s3Upload.Owner      = new S3ObjectIdentity();
                            s3Upload.Owner.Name = listUpload.Owner.DisplayName;
                            s3Upload.Owner.Id   = listUpload.Owner.Id;
                        }

                        if (listUpload.Initiator != null)
                        {
                            s3Upload.Initiator      = new S3ObjectIdentity();
                            s3Upload.Initiator.Name = listUpload.Initiator.DisplayName;
                            s3Upload.Initiator.Id   = listUpload.Initiator.Id;
                        }

                        response.Uploads.Add(s3Upload);
                    }
                }
                else
                {
                    response.Uploads = Array.Empty <S3Upload>();
                }
            }
        }