/// <summary> /// 将内容从流上传到objectName /// </summary> /// <param name="bucketName">桶名称</param> /// <param name="objectName">对象名称</param> /// <param name="filePath">文件路径+文件全名称</param> /// <param name="contentType">文件的内容类型。默认为“应用程序/八位字节流”</param> /// <returns></returns> public async Task <bool> PutObjectByStreamAsync(string bucketName , string objectName , string filePath , string contentType) { try { byte[] bytes = File.ReadAllBytes(filePath); MemoryStream stream = new MemoryStream(bytes); Aes aes = Aes.Create(); aes.KeySize = 256; aes.GenerateKey(); var ssec = new SSEC(aes.Key); await _minioClient.PutObjectAsync(bucketName, objectName, stream, stream.Length, contentType, null, ssec); return(true); } catch (Exception ex) { throw ex; } }
public static void Main(string[] args) { string endPoint = null; string accessKey = null; string secretKey = null; bool enableHTTPS = false; if (Environment.GetEnvironmentVariable("SERVER_ENDPOINT") != null) { endPoint = Environment.GetEnvironmentVariable("SERVER_ENDPOINT"); accessKey = Environment.GetEnvironmentVariable("ACCESS_KEY"); secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); if (Environment.GetEnvironmentVariable("ENABLE_HTTPS") != null) { enableHTTPS = Environment.GetEnvironmentVariable("ENABLE_HTTPS").Equals("1"); } } else { endPoint = "play.min.io:9000"; accessKey = "Q3AM3UQ867SPQQA43P2F"; secretKey = "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"; enableHTTPS = true; } ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; // WithSSL() enables SSL support in MinIO client MinioClient minioClient = null; if (enableHTTPS) { minioClient = new MinioClient(endPoint, accessKey, secretKey).WithSSL(); } else { minioClient = new MinioClient(endPoint, accessKey, secretKey); } try { // Assign parameters before starting the test string bucketName = GetRandomName(); string smallFileName = CreateFile(1 * UNIT_MB); string bigFileName = CreateFile(6 * UNIT_MB); string objectName = GetRandomName(); string destBucketName = GetRandomName(); string destObjectName = GetRandomName(); List <string> objectsList = new List <string>(); for (int i = 0; i < 10; i++) { objectsList.Add(objectName + i.ToString()); } // Set app Info minioClient.SetAppInfo("app-name", "app-version"); // Set HTTP Tracing On // minioClient.SetTraceOn(); // Set HTTP Tracing Off // minioClient.SetTraceOff(); // Check if bucket exists Cases.BucketExists.Run(minioClient, bucketName).Wait(); // Create a new bucket Cases.MakeBucket.Run(minioClient, bucketName).Wait(); Cases.MakeBucket.Run(minioClient, destBucketName).Wait(); // List all the buckets on the server Cases.ListBuckets.Run(minioClient).Wait(); // Put an object to the new bucket Cases.PutObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Get object metadata Cases.StatObject.Run(minioClient, bucketName, objectName).Wait(); // List the objects in the new bucket Cases.ListObjects.Run(minioClient, bucketName); // Delete the file and Download the object as file Cases.GetObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Delete the file and Download partial object as file Cases.GetPartialObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Server side copyObject Cases.CopyObject.Run(minioClient, bucketName, objectName, destBucketName, objectName).Wait(); // Server side copyObject with metadata replacement Cases.CopyObjectMetadata.Run(minioClient, bucketName, objectName, destBucketName, objectName).Wait(); // Upload a File with PutObject Cases.FPutObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Delete the file and Download the object as file Cases.FGetObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Automatic Multipart Upload with object more than 5Mb Cases.PutObject.Run(minioClient, bucketName, objectName, bigFileName).Wait(); // Specify SSE-C encryption options Aes aesEncryption = Aes.Create(); aesEncryption.KeySize = 256; aesEncryption.GenerateKey(); var ssec = new SSEC(aesEncryption.Key); // Specify SSE-C source side encryption for Copy operations var sseCpy = new SSECopy(aesEncryption.Key); // Uncomment to specify SSE-S3 encryption option // var sses3 = new SSES3(); // Uncomment to specify SSE-KMS encryption option // var sseKms = new SSEKMS("kms-key", new Dictionary<string, string>{{ "kms-context", "somevalue"}}); // Upload encrypted object Cases.PutObject.Run(minioClient, bucketName, objectName, smallFileName, sse: ssec).Wait(); // Copy SSE-C encrypted object to unencrypted object Cases.CopyObject.Run(minioClient, bucketName, objectName, destBucketName, objectName, sseSrc: sseCpy, sseDest: ssec).Wait(); // Download SSE-C encrypted object Cases.FGetObject.Run(minioClient, destBucketName, objectName, bigFileName, sse: ssec).Wait(); // List the incomplete uploads Cases.ListIncompleteUploads.Run(minioClient, bucketName); // Remove all the incomplete uploads Cases.RemoveIncompleteUpload.Run(minioClient, bucketName, objectName).Wait(); // Set a policy for given bucket Cases.SetBucketPolicy.Run(minioClient, bucketName).Wait(); // Get the policy for given bucket Cases.GetBucketPolicy.Run(minioClient, bucketName).Wait(); // Set bucket notifications Cases.SetBucketNotification.Run(minioClient, bucketName).Wait(); // Get bucket notifications Cases.GetBucketNotification.Run(minioClient, bucketName).Wait(); // Remove all bucket notifications Cases.RemoveAllBucketNotifications.Run(minioClient, bucketName).Wait(); // Get the presigned url for a GET object request Cases.PresignedGetObject.Run(minioClient, bucketName, objectName).Wait(); // Get the presigned POST policy curl url Cases.PresignedPostPolicy.Run(minioClient).Wait(); // Get the presigned url for a PUT object request Cases.PresignedPutObject.Run(minioClient, bucketName, objectName).Wait(); // Delete the list of objects Cases.RemoveObjects.Run(minioClient, bucketName, objectsList).Wait(); // Delete the object Cases.RemoveObject.Run(minioClient, bucketName, objectName).Wait(); // Delete the object Cases.RemoveObject.Run(minioClient, destBucketName, objectName).Wait(); // Tracing request with custom logger Cases.CustomRequestLogger.Run(minioClient).Wait(); // Remove the buckets Cases.RemoveBucket.Run(minioClient, bucketName).Wait(); Cases.RemoveBucket.Run(minioClient, destBucketName).Wait(); // Remove the binary files created for test File.Delete(smallFileName); File.Delete(bigFileName); Console.ReadLine(); } catch (MinioException ex) { Console.WriteLine(ex.Message); } }
public static void Main(string[] args) { string endPoint = null; string accessKey = null; string secretKey = null; bool enableHTTPS = false; int port = 80; if (Environment.GetEnvironmentVariable("SERVER_ENDPOINT") != null) { endPoint = Environment.GetEnvironmentVariable("SERVER_ENDPOINT"); int posColon = endPoint.LastIndexOf(':'); if (posColon != -1) { port = Int32.Parse(endPoint.Substring(posColon + 1, (endPoint.Length - posColon - 1))); endPoint = endPoint.Substring(0, posColon); } accessKey = Environment.GetEnvironmentVariable("ACCESS_KEY"); secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); if (Environment.GetEnvironmentVariable("ENABLE_HTTPS") != null) { enableHTTPS = Environment.GetEnvironmentVariable("ENABLE_HTTPS").Equals("1"); if (enableHTTPS && port == 80) { port = 443; } } } else { endPoint = "play.min.io"; accessKey = "Q3AM3UQ867SPQQA43P2F"; secretKey = "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"; enableHTTPS = true; port = 443; } ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; // WithSSL() enables SSL support in MinIO client MinioClient minioClient = null; if (enableHTTPS) { minioClient = new MinioClient() .WithEndpoint(endPoint, port) .WithCredentials(accessKey, secretKey) .WithSSL() .Build(); } else { minioClient = new MinioClient() .WithEndpoint(endPoint, port) .WithCredentials(accessKey, secretKey) .Build(); } // Assign parameters before starting the test string bucketName = GetRandomName(); string smallFileName = CreateFile(1 * UNIT_MB); string bigFileName = CreateFile(6 * UNIT_MB); string objectName = GetRandomName(); string destBucketName = GetRandomName(); string destObjectName = GetRandomName(); string lockBucketName = GetRandomName(); List <string> objectsList = new List <string>(); for (int i = 0; i < 10; i++) { objectsList.Add(objectName + i.ToString()); } // Set app Info minioClient.SetAppInfo("app-name", "app-version"); // Set HTTP Tracing On // minioClient.SetTraceOn(); // Set HTTP Tracing Off // minioClient.SetTraceOff(); // Check if bucket exists Cases.BucketExists.Run(minioClient, bucketName).Wait(); // Create a new bucket Cases.MakeBucket.Run(minioClient, bucketName).Wait(); Cases.MakeBucket.Run(minioClient, destBucketName).Wait(); // Bucket with Lock tests Cases.MakeBucketWithLock.Run(minioClient, lockBucketName).Wait(); Cases.BucketExists.Run(minioClient, lockBucketName).Wait(); Cases.RemoveBucket.Run(minioClient, lockBucketName).Wait(); // Versioning tests Cases.GetVersioning.Run(minioClient, bucketName).Wait(); Cases.EnableSuspendVersioning.Run(minioClient, bucketName).Wait(); Cases.GetVersioning.Run(minioClient, bucketName).Wait(); // List all the buckets on the server Cases.ListBuckets.Run(minioClient).Wait(); // Start listening for bucket notifications Cases.ListenBucketNotifications.Run(minioClient, bucketName, new List <EventType> { EventType.ObjectCreatedAll }); // Put an object to the new bucket Cases.PutObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Get object metadata Cases.StatObject.Run(minioClient, bucketName, objectName).Wait(); // List the objects in the new bucket Cases.ListObjects.Run(minioClient, bucketName); // Get the file and Download the object as file Cases.GetObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Select content from object Cases.SelectObjectContent.Run(minioClient, bucketName, objectName).Wait(); // Delete the file and Download partial object as file Cases.GetPartialObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Server side copyObject Cases.CopyObject.Run(minioClient, bucketName, objectName, destBucketName, objectName).Wait(); // Server side copyObject with metadata replacement Cases.CopyObjectMetadata.Run(minioClient, bucketName, objectName, destBucketName, objectName).Wait(); // Upload a File with PutObject Cases.FPutObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Delete the file and Download the object as file Cases.FGetObject.Run(minioClient, bucketName, objectName, smallFileName).Wait(); // Automatic Multipart Upload with object more than 5Mb Cases.PutObject.Run(minioClient, bucketName, objectName, bigFileName).Wait(); // Specify SSE-C encryption options var aesEncryption = Aes.Create(); aesEncryption.KeySize = 256; aesEncryption.GenerateKey(); var ssec = new SSEC(aesEncryption.Key); // Specify SSE-C source side encryption for Copy operations var sseCpy = new SSECopy(aesEncryption.Key); // Uncomment to specify SSE-S3 encryption option var sses3 = new SSES3(); // Uncomment to specify SSE-KMS encryption option var sseKms = new SSEKMS("kms-key", new Dictionary <string, string> { { "kms-context", "somevalue" } }); // Upload encrypted object string putFileName1 = CreateFile(1 * UNIT_MB); Cases.PutObject.Run(minioClient, bucketName, objectName, putFileName1, sse: ssec).Wait(); // Copy SSE-C encrypted object to unencrypted object Cases.CopyObject.Run(minioClient, bucketName, objectName, destBucketName, objectName, sseSrc: sseCpy, sseDest: ssec).Wait(); // Download SSE-C encrypted object Cases.FGetObject.Run(minioClient, destBucketName, objectName, bigFileName, sse: ssec).Wait(); // List the incomplete uploads Cases.ListIncompleteUploads.Run(minioClient, bucketName); // Remove all the incomplete uploads Cases.RemoveIncompleteUpload.Run(minioClient, bucketName, objectName).Wait(); // Set a policy for given bucket Cases.SetBucketPolicy.Run(minioClient, bucketName).Wait(); // Get the policy for given bucket Cases.GetBucketPolicy.Run(minioClient, bucketName).Wait(); // Set bucket notifications Cases.SetBucketNotification.Run(minioClient, bucketName).Wait(); // Get bucket notifications Cases.GetBucketNotification.Run(minioClient, bucketName).Wait(); // Remove all bucket notifications Cases.RemoveAllBucketNotifications.Run(minioClient, bucketName).Wait(); // Object Lock Configuration operations lockBucketName = GetRandomName(); Cases.MakeBucketWithLock.Run(minioClient, lockBucketName).Wait(); ObjectLockConfiguration configuration = new ObjectLockConfiguration(RetentionMode.GOVERNANCE, 35); Cases.SetObjectLockConfiguration.Run(minioClient, lockBucketName, configuration).Wait(); Cases.GetObjectLockConfiguration.Run(minioClient, lockBucketName).Wait(); Cases.RemoveObjectLockConfiguration.Run(minioClient, lockBucketName).Wait(); Cases.RemoveBucket.Run(minioClient, lockBucketName).Wait(); // Bucket Replication operations string replicationCfgID = "myreplicationID-3333"; Cases.SetBucketReplication.Run(minioClient, bucketName, destBucketName, replicationCfgID).Wait(); Cases.GetBucketReplication.Run(minioClient, bucketName, replicationCfgID).Wait(); // TODO: we can verify that the replication happens by checking // the content in the destination matches the source content. // We also cannot remove the replication config immediately // after running GetBucketReplication command, as // replicating the source in the destination takes some time. Cases.RemoveBucketReplication.Run(minioClient, bucketName).Wait(); // Get the presigned url for a GET object request Cases.PresignedGetObject.Run(minioClient, bucketName, objectName).Wait(); // Get the presigned POST policy curl url Cases.PresignedPostPolicy.Run(minioClient, bucketName, objectName).Wait(); // Get the presigned url for a PUT object request Cases.PresignedPutObject.Run(minioClient, bucketName, objectName).Wait(); // Delete the list of objects Cases.RemoveObjects.Run(minioClient, bucketName, objectsList).Wait(); // Delete the object Cases.RemoveObject.Run(minioClient, bucketName, objectName).Wait(); // Delete the object Cases.RemoveObject.Run(minioClient, destBucketName, objectName).Wait(); // Retry on failure Cases.RetryPolicyObject.Run(minioClient, destBucketName, objectName).Wait(); // Tracing request with custom logger Cases.CustomRequestLogger.Run(minioClient).Wait(); // Remove the buckets Cases.RemoveBucket.Run(minioClient, bucketName).Wait(); Cases.RemoveBucket.Run(minioClient, destBucketName).Wait(); // Remove the binary files created for test File.Delete(smallFileName); File.Delete(bigFileName); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.ReadLine(); } }