首页 > 解决方案 > 使用 C# 在 AWS S3 存储桶中保存屏幕截图

问题描述

我正在开发 Windows 应用程序,它会自动截取屏幕截图并保存在 AWS S3 存储桶中。我能够截取屏幕截图并保存在我的本地系统中,但努力将图像保存到 S3 存储桶。

这是我的代码

        double screenLeft = SystemParameters.VirtualScreenLeft;
        double screenTop = SystemParameters.VirtualScreenTop;
        double screenWidth = SystemParameters.VirtualScreenWidth;
        double screenHeight = SystemParameters.VirtualScreenHeight;

        string bucketName = "bucketname";
        string awsAccessKey = "AccessKey";
        string awsSecretKey = "SecretKey";
        string folderPath = "Screenshot/";
        string date = today.ToString("yyyy-MM-dd");
        string folderexistcheck = folderPath + Sessions.EmpId + "/" + date + "/";
        IAmazonS3 client = new AmazonS3Client(awsAccessKey, awsSecretKey, RegionEndpoint.USWest2);

        using (Bitmap bmp = new Bitmap((int)screenWidth, (int)screenHeight))
        {
            using (Graphics g = Graphics.FromImage(bmp))
            {
                String filename = "ScreenCapture-" + DateTime.Now.ToString("ddMMyyyy-hhmmss") + ".png";
                Opacity = .0;
                g.CopyFromScreen((int)screenLeft, (int)screenTop, 0, 0, bmp.Size);
                MemoryStream m = new MemoryStream();
                /* Saving screenshot in local system */
                bmp.Save("C:\\screenshot\\" + filename);
                new MemoryStream(m.GetBuffer());
                Opacity = 1;

                /* this is what i tryed to save screenshot in S3 bucket */
                FileInfo file = new FileInfo(bmp);
                string path = folderexistcheck;

                PutObjectRequest request = new PutObjectRequest()
                {
                    InputStream = file.OpenRead(),
                    BucketName = bucketName,
                    Key = path // <-- in S3 key represents a path  
                };

                PutObjectResponse response = client.PutObject(request);
            }

        }

标签: c#amazon-web-servicesamazon-s3

解决方案


推荐阅读