예제 #1
0
        public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request)
        {
            var bucket            = $"backups-service-{backup.ServiceId}";
            var service           = new Service(backup.ServiceId);
            var server            = new Server(service.ServerId);
            var fileSystemService = server.FileSystemService;
            var combinePath       = FileSystem.FixAbsoluteFilePath(
                FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path,
                                       Compress(backup, request)), server.OperatingSystem);
            var fileSize = fileSystemService.GetFileSize(combinePath);

            BackupManagerController.ThrowExceedQuota(backup, request, fileSize);
            backup.FileSize = fileSize;

            if (!await MinioClient.BucketExistsAsync(bucket))
            {
                await MinioClient.MakeBucketAsync(bucket, _region);
            }

            var    contents = fileSystemService.ReadBinary(combinePath);
            Stream stream   = new MemoryStream(contents);
            await MinioClient.PutObjectAsync(bucket, backup.ZipFullName, stream, stream.Length, "application/zip");

            return(new BackupResponse(true));
        }
예제 #2
0
        public async Task <IActionResult> UploadFile()
        {
            //服务器区域
            //var location = "us-east-1";
            try
            {
                bool found = await minio.BucketExistsAsync(bucketName);

                if (found)
                {
                    //await minio.MakeBucketAsync(bucketName);
                    foreach (var file in HttpContext.Request.Form.Files)
                    {
                        Stream stream = file.OpenReadStream();

                        await minio.PutObjectAsync(bucketName,
                                                   file.FileName,
                                                   stream,
                                                   file.Length,
                                                   file.ContentType);
                    }
                }
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
            }

            return(Json(new { Result = "ok" }));
        }
예제 #3
0
 protected virtual async Task CreateBucketIfNotExists()
 {
     if (!await _client.BucketExistsAsync(_bucketName))
     {
         await _client.MakeBucketAsync(_bucketName);
     }
 }
예제 #4
0
        public async Task <IEnumerable <string> > Get()
        {
            if (!await _blobClient.BucketExistsAsync(bucketName))
            {
                await _blobClient.MakeBucketAsync(bucketName);
            }

            return(_blobClient.ListObjectsAsync(bucketName).Select(x => x.Key).ToEnumerable());
        }
예제 #5
0
        private async Task EnsureBucket()
        {
            bool found = await minio.BucketExistsAsync(bucketName);

            if (!found)
            {
                await minio.MakeBucketAsync(bucketName);
            }
        }
예제 #6
0
        public override async Task <bool> Backup(string fileName, byte[] contents, string contentType)
        {
            if (!await MinioClient.BucketExistsAsync(_bucketName))
            {
                await MinioClient.MakeBucketAsync(_bucketName, _region);
            }

            Stream stream = new MemoryStream(contents);
            await MinioClient.PutObjectAsync(_bucketName, fileName, stream, stream.Length, contentType);

            return(true);
        }
예제 #7
0
        public async Task <int> Upload(String encode, String name, String username)
        {
            var endpoint  = "127.0.0.1:9000";
            var accessKey = "VDX5QGGFWH9HFGCQXY42";
            var secretKey = "FSDxipLeNUX7E8Y6ttsXVhaTyGe6mnlCHsP1xWKW";
            var minio     = new MinioClient(endpoint, accessKey, secretKey);

            var bucketName  = username.ToLower();
            var location    = "us-east-1";
            var objectName  = name;
            var contentType = "application/octet-stream";
            int mod4        = encode.Length % 4;

            byte[] bs = Convert.FromBase64String(encode);
            System.IO.MemoryStream filestream = new System.IO.MemoryStream(bs);

            bool found = await minio.BucketExistsAsync(bucketName);

            if (!found)
            {
                await minio.MakeBucketAsync(bucketName, location);
            }
            await minio.PutObjectAsync(bucketName, objectName, filestream, filestream.Length, contentType);

            return(1);
        }
예제 #8
0
        public async Task <IList <MinioUploadDto> > Upload(ICollection <IFormFile> files)
        {
            IList <MinioUploadDto> minioUploadDtos = new List <MinioUploadDto>();
            MinioClient            minioClient     = new MinioClient(AppSettings.MinIO.EndPoint, AppSettings.MinIO.AccessKey, AppSettings.MinIO.SecretKey);
            bool isExist = await minioClient.BucketExistsAsync(AppSettings.MinIO.BucketName);

            if (!isExist)
            {
                minioClient.MakeBucketAsync(AppSettings.MinIO.BucketName);
                //minioClient.SetPolicyAsync(AppSettings.MinIO.BucketName, "*.*", PolicyType.WRITE_ONLY);
            }
            foreach (var file in files)
            {
                var    fileName   = file.Name;
                string objectName = $"{Clock.Now.ToString("yyyyMMdd")}/fileName";
                minioClient.PutObjectAsync(AppSettings.MinIO.BucketName, objectName, fileName, file.ContentType);
                MinioUploadDto minioUploadDto = new MinioUploadDto
                {
                    FileName = fileName,
                    Url      = $"{AppSettings.MinIO.EndPoint}/{AppSettings.MinIO.BucketName}/{objectName}",
                };
                minioUploadDtos.Add(minioUploadDto);
            }

            return(minioUploadDtos);
        }
예제 #9
0
        public async Task <string> UploadAsync(Stream data, string bucketName, string fileName)
        {
            if (string.IsNullOrEmpty(bucketName))
            {
                throw new MinioException("haven't specified bucket name");
            }
            if (string.IsNullOrEmpty(fileName))
            {
                fileName = Guid.NewGuid().ToString();
            }

            if (!await _client.BucketExistsAsync(bucketName))
            {
                await _client.MakeBucketAsync(bucketName);

                await _client.SetPolicyAsync(bucketName, _config.GetPolicyJsonString(bucketName));
            }

            using (data)
            {
                await _client.PutObjectAsync(bucketName, fileName, data, data.Length);

                return($"{bucketName}/{fileName}");
            }
        }
예제 #10
0
        /// <summary>
        /// Task that uploads a file to a bucket
        /// </summary>
        /// <param name="minio"></param>
        /// <returns></returns>
        private static async Task Run(MinioClient minio)
        {
            // Make a new bucket called mymusic.
            var bucketName = "mymusic-folder"; //<==== change this
            var location   = "us-east-1";
            // Upload the zip file
            var objectName  = "my-golden-oldies.mp3";
            var filePath    = "C:\\Users\\vagrant\\Downloads\\golden_oldies.mp3";
            var contentType = "application/zip";

            try
            {
                bool found = await minio.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minio.MakeBucketAsync(bucketName, location);
                }
                await minio.PutObjectAsync(bucketName, objectName, filePath, contentType);

                Console.WriteLine("Successfully uploaded " + objectName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
예제 #11
0
파일: FileUpload.cs 프로젝트: jflzbest/C-
        /// <summary>
        /// Task that uploads a file to a bucket
        /// </summary>
        /// <param name="minio"></param>
        /// <returns></returns>
        private async static Task Run(MinioClient minio)
        {
            // Make a new bucket called mymusic.
            var bucketName = "mymusic-folder"; //<==== change this
            var location   = "us-east-1";
            // Upload the zip file
            var objectName  = "test.doc";
            var filePath    = "D:\\test.doc";
            var contentType = "application/msword";

            try
            {
                bool found = await minio.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minio.MakeBucketAsync(bucketName, location);
                }
                await minio.PutObjectAsync(bucketName, objectName, filePath, contentType);

                Console.Out.WriteLine("Successfully uploaded " + objectName);
            }
            catch (Exception e)
            {
                Console.Out.WriteLine(e);
            }
        }
예제 #12
0
 private void ThrowExceptionIfBucketDoesNotExist(string bucketName)
 {
     if (!m_client.BucketExistsAsync(bucketName).Await())
     {
         throw new FolderMissingException($"Bucket {bucketName} does not exist.");
     }
 }
예제 #13
0
        private async static Task RemoveBucket_Test1(MinioClient minio)
        {
            Console.Out.WriteLine("Test: RemoveBucketAsync");
            string bucketName = GetRandomName(length: 60);
            await minio.MakeBucketAsync(bucketName);

            bool found = await minio.BucketExistsAsync(bucketName);

            Assert.IsTrue(found);
            await minio.RemoveBucketAsync(bucketName);

            found = await minio.BucketExistsAsync(bucketName);

            Assert.IsFalse(found);
            Console.Out.WriteLine("Test: RemoveBucketAsync succeeded");
        }
예제 #14
0
        private async static Task MakeBucket_Test3(MinioClient minio)
        {
            Console.Out.WriteLine("Test 3 : MakeBucketAsync with region");
            string bucketName = GetRandomName(length: 60);

            try
            {
                await minio.MakeBucketAsync(bucketName, location : "eu-central-1");

                bool found = await minio.BucketExistsAsync(bucketName);

                Assert.IsTrue(found);
                if (found)
                {
                    await minio.MakeBucketAsync(bucketName);

                    await minio.RemoveBucketAsync(bucketName);
                }
            }
            catch (MinioException ex)
            {
                Assert.AreEqual <string>(ex.message, "Your previous request to create the named bucket succeeded and you already own it.");
            }
            Console.Out.WriteLine("Test 3 : MakeBucketAsync with region complete");
        }
예제 #15
0
        public async Task <IEnumerable <string> > EnumerateBucket(string bucket)
        {
            if (!await _client.BucketExistsAsync(bucket))
            {
                return(new string[0]);
            }

            var blobNames  = new List <string>();
            var observable = _client.ListObjectsAsync(bucket);

            using (observable.Subscribe(item => blobNames.Add(item.Key)))
            {
                await observable;
                return(blobNames.ToList());
            }
        }
        public async Task <UploadFileViewModel> Handle(UploadFileDto request, CancellationToken cancellationToken)
        {
            var bucketExists = await _client.BucketExistsAsync(request.FileType, cancellationToken);

            if (!bucketExists)
            {
                await _client.MakeBucketAsync(request.FileType, cancellationToken : cancellationToken);
            }

            var name   = Guid.NewGuid().ToString();
            var stream = request.File.OpenReadStream();

            await _client.PutObjectAsync(request.FileType, name, stream, stream.Length, cancellationToken : cancellationToken);

            var file = _mapper.Map <File>(request);

            file.Name        = name;
            file.ContentType = request.File.ContentType;
            file.Extension   = Path.GetExtension(request.File.FileName);
            // file.Extension = request.File.Headers.

            await _context.AddAsync(file);

            await _context.SaveChangesAsync();

            return(new UploadFileViewModel {
                Id = $"file.{request.FileType}.{name}.{file.Id}"
            });
        }
예제 #17
0
        public async Task <string> UploadFile(string bucketName, IFormFile file)
        {
            string _rtn = "";

            try
            {
                MinioClient minio = new MinioClient(con.minioHost, con.minioAccessKey, con.minioSecretKey);
BucketControl:
                bool found = await minio.BucketExistsAsync(bucketName);

                if (found)
                {
                    string   fileName     = Guid.NewGuid().ToString();
                    string[] splittedName = file.FileName.Split('.');
                    fileName += "." + splittedName[1].ToString();
                    using (Stream stream = file.OpenReadStream())
                    {
                        await minio.PutObjectAsync(bucketName, fileName, stream, stream.Length);

                        _rtn = String.Format(@"http://{0}/{1}/{2}", con.remoteMinioHost, bucketName, fileName);
                    }
                }
                else
                {
                    await minio.MakeBucketAsync(bucketName);

                    goto BucketControl;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            return(_rtn);
        }
예제 #18
0
        // File uploader task.
        public async static Task Upload(
            MinioClient minioClient,
            string bucketName,
            string objectName,
            string filePath,
            string location,
            string contentType
            )
        {
            try
            {
                // Make a bucket on the server, if not already present.
                bool found = await minioClient.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minioClient.MakeBucketAsync(bucketName, location);
                }

                // Upload a file to bucket.
                await minioClient.PutObjectAsync(bucketName, objectName, filePath, contentType);

                Console.WriteLine("Successfully uploaded " + objectName);
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
            }
        }
예제 #19
0
        public async Task PresignedGetObject()
        {
            // todo how to test this with mock client.
            var client = new MinioClient(endpoint: "play.min.io", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");

            var bucket     = "bucket";
            var objectName = "object-name";

            if (!await client.BucketExistsAsync(bucket))
            {
                await client.MakeBucketAsync(bucket);
            }

            if (!await this.ObjectExistsAsync(client, bucket, objectName))
            {
                var helloData   = Encoding.UTF8.GetBytes("hello world");
                var helloStream = new MemoryStream();
                helloStream.Write(helloData);
                helloStream.Seek(0, SeekOrigin.Begin);
                await client.PutObjectAsync(bucket, objectName, helloStream, helloData.Length);
            }

            var signedUrl = await client.PresignedGetObjectAsync(bucket, objectName, 3600, null, _requestDate);

            Assert.AreEqual(
                "http://play.min.io/bucket/object-name?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=Q3AM3UQ867SPQQA43P2F%2F20200501%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200501T154533Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d4202da690618f77142d6f0557c97839f0773b2c718082e745cd9b199aa6b28f",
                signedUrl);
        }
예제 #20
0
 private async Task MakeBucketIfNotExists(string bucketName)
 {
     if (!await _client.BucketExistsAsync(bucketName))
     {
         await _client.MakeBucketAsync(bucketName);
     }
 }
예제 #21
0
        public async Task PresignedGetObjectWithHeaders()
        {
            // todo how to test this with mock client.
            var client = new MinioClient(endpoint: "play.min.io", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");

            var bucket     = "bucket";
            var objectName = "object-name";

            Dictionary <string, string> reqParams = new Dictionary <string, string>
            {
                { "Response-Content-Disposition", "attachment; filename=\"filename.jpg\"" },
            };

            if (!await client.BucketExistsAsync(bucket))
            {
                await client.MakeBucketAsync(bucket);
            }

            if (!await this.ObjectExistsAsync(client, bucket, objectName))
            {
                var helloData   = Encoding.UTF8.GetBytes("hello world");
                var helloStream = new MemoryStream();
                helloStream.Write(helloData);
                await client.PutObjectAsync(bucket, objectName, helloStream, helloData.Length);
            }


            var signedUrl = await client.PresignedGetObjectAsync(bucket, objectName, 3600, reqParams, _requestDate);

            Assert.AreEqual(
                "http://play.min.io/bucket/object-name?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=Q3AM3UQ867SPQQA43P2F%2F20200501%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200501T154533Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22filename.jpg%22&X-Amz-Signature=de66f04dd4ac35838b9e83d669f7b5a70b452c6468e2b4a9e9c29f42e7fa102d",
                signedUrl);
        }
예제 #22
0
파일: MinIO.cs 프로젝트: israelsam/Qantler
        public async Task <UploadResponse> FileUpload(byte[] imageBytes, string fileName)
        {
            var            bucketName = this.bucket;
            UploadResponse obj        = new UploadResponse();

            try
            {
                var minio = new MinioClient(this.endpoint, accessKey, accessSecret);
                // Make a bucket on the server, if not already present.
                bool found = await minio.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minio.MakeBucketAsync(bucketName, this.location);
                }
                using (var stream = new MemoryStream(imageBytes))
                {
                    // Upload a file to bucket.
                    await minio.PutObjectAsync(bucketName, fileName, stream, stream.Length);
                }
                obj.Message    = "Uploded Successfully.";
                obj.HasSucceed = true;
                obj.FileName   = fileName;
                obj.FileUrl    = this.BaseUrl + bucketName + "/" + fileName;
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
                obj.Message    = "Uploaded failed with error " + e.message;
                obj.HasSucceed = false;
                obj.FileUrl    = this.BaseUrl + bucketName + "/";
            }
            return(obj);
        }
    public async Task TestRetryPolicyOnSuccess()
    {
        var client = new MinioClient()
                     .WithEndpoint("play.min.io")
                     .WithCredentials("Q3AM3UQ867SPQQA43P2F",
                                      "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
                     .WithSSL()
                     .Build();

        var invokeCount = 0;

        client.WithRetryPolicy(
            async callback =>
        {
            invokeCount++;
            return(await callback());
        });

        var bktArgs = new BucketExistsArgs()
                      .WithBucket(Guid.NewGuid().ToString());
        var result = await client.BucketExistsAsync(bktArgs);

        Assert.IsFalse(result);
        Assert.AreEqual(invokeCount, 1);
    }
예제 #24
0
 protected virtual async Task CreateBucketIfNotExists(MinioClient client, string containerName)
 {
     if (!await client.BucketExistsAsync(containerName))
     {
         await client.MakeBucketAsync(containerName);
     }
 }
예제 #25
0
        private static async Task Run(MinioClient minio_client, string bucketName, string objectName, string filePath)
        {
            string self_bucketName = bucketName;
            string location        = "us-east-1";
            string self_objectName = objectName;
            string contentType     = "application/text";
            string self_filePath   = filePath;

            try
            {
                bool found = await minio_client.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minio_client.MakeBucketAsync(bucketName, location);
                }

                await minio_client.PutObjectAsync(self_bucketName, self_objectName, self_filePath, contentType);

                Console.WriteLine("Successfully Upload: {0}", objectName);
            }
            catch (MinioException Minio_Error)

            {
                Console.WriteLine("Upload Error: {0}", Minio_Error.Message);
            }
        }
예제 #26
0
파일: Program.cs 프로젝트: jflzbest/C-
        private async static Task Run(MinioClient minio)
        {
            // Make a new bucket called mymusic.
            var bucketName = "ai-medical1"; //<==== change this
            //var location = "172.16.131.38:9003/minio/login";
            // Upload the zip file
            var objectName  = "11122test.doc";
            var filePath    = "D:\\HE_20180612214954.doc";
            var contentType = "application/msword";

            //var endpoint = "172.16.131.38:9003";
            try
            {
                bool found = await minio.BucketExistsAsync(bucketName);

                if (!found)
                {
                    await minio.MakeBucketAsync(bucketName);
                }
                await minio.PutObjectAsync(bucketName, objectName, filePath, contentType);

                Console.Out.WriteLine("Successfully uploaded " + objectName);
            }
            catch (Exception e)
            {
                Console.Out.WriteLine(e);
            }
        }
예제 #27
0
        // File uploader task.
        private async static Task Run(MinioClient minio)
        {
            var bucketName  = "vivek";
            var location    = "us-east-1";
            var objectName  = "example.pdf";
            var filePath    = "C:\\Users\\user\\.p2\\Desktop\\Outgoing\\example.pdf";
            var contentType = "application/pdf";

            Console.WriteLine("Step:1 -- We have example.pdf file in Outgoing folder");

            try
            {
                // Make a bucket on the server, if not already present.
                bool found = await minio.BucketExistsAsync(bucketName);

                if (!found)
                {
                    Console.WriteLine("Step:2 -- Folder is not found, So we created the folder for you !");
                    await minio.MakeBucketAsync(bucketName, location);
                }
                Console.WriteLine("Step:3 -- Upload a file to bucket");
                await minio.PutObjectAsync(bucketName, objectName, filePath, contentType);

                Console.WriteLine("Successfully uploaded " + objectName);
                var url = "http://" + "play.min.io/" + "minio/" + bucketName + "/";
                //var uploadPath = "http://play.min.io/minio/vivek/";
                Console.WriteLine("Your file saved at location :-" + url);
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
            }
        }
예제 #28
0
        private async static Task Setup_Test(MinioClient minio, string bucketName)
        {
            await minio.MakeBucketAsync(bucketName);

            bool found = await minio.BucketExistsAsync(bucketName);

            Assert.IsTrue(found);
        }
예제 #29
0
 public static async Task <MinioBucketStorage> GetOrCreateBucket(MinioClient mc, string bucketName)
 {
     if (!await mc.BucketExistsAsync(bucketName))
     {
         await mc.MakeBucketAsync(bucketName);
     }
     return(new MinioBucketStorage(mc, bucketName));
 }
예제 #30
0
        public async Task TestNoConnectionError()
        {
            // invalid uri
            var minio = new MinioClient("localhost:12121");

            var ex = await Assert.ThrowsExceptionAsync <ConnectionException>(() => minio.BucketExistsAsync("test"));

            Assert.IsNotNull(ex.ServerResponse);
        }