עזרה במציאת קודד להעלאת קבצים לענן של אמזון



  • שלום וברכה,

    אני עובדת כמתכנתת וכעת אמורה לפתח תהליך של העלאת קבצים לענן של אמזון s3, אפילו לבוס שלי אין הרבה מידע איך ממשים ומה עושים,
    אנחנו כותבים בצד קליינט באנגולר וצד שרת ב-c#.

    יש למישהו נסיון עם זה?

    תודה רבה


  • תכנות

    העלאת קבצים היא מצד הקליינט?


  • תכנות

    https://stackoverflow.com/questions/34526851/upload-files-to-amazon-s3-with-dropzone-js-issue/51059094#51059094

    (אגב, פעם היה את זה אבל זה כבר לא נתמך ע"י המפתחים)



  • @chagold מתחילה מהקליינט וממשיכה בסרבר.


  • ניהול

    זה מאוד פשוט.
    באנגולר אתם שולחים את הקובץ לשרת, אם את השלב הזה גם מוקשה, פתחו על זה אשכול חדש.
    בצד השרת יש לכם אוסף בתים (byte[]), או זרם (stream).
    אתם אמורים להעלות, לקבל תשובה עם מזהה, ולהחזיר ללקוח אישור + מזהה אם נדרש.

    יש לכם כבר חשבון בAWS?
    פתחתם כבר BUCKET בS3?

    אשמח לעזור, תעדכנו סטטוס.



  • לא יודע אם זה עוד רלבנטי לך, אבל לתועלת הציבור.
    תתקיני בפרויקט את הSDK הזה: https://aws.amazon.com/sdk-for-net/
    (ישנה שם אפשרות להתקין את זה דרך Nuget)

    הנה מחלקה שמשתמשת בAPI הזה כדי לגבות את הדטה בייסים שלי:

    בהצלחה!

    זה מציג את הקוד לא הכי מושלם..

    using Amazon.S3;
    using Amazon.S3.Transfer;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;

    namespace AwsEmptyApp1
    {
    public class UploadFiles
    {
    string bucket = "";//your backet
    string SubDirectoryInBucket = "";//your directory
    Dictionary<string,string> allFiles = new Dictionary<string, string>(); //fileName, fullPath

        public void Start()
        {           
    
            try
            {
                //כאן נכתב הקוד שמגבה את הדטה בייסים השונים
                //אחרי זה רצים בלולאה ויוצרים את מערך השמות שלהם עבור ההלאה
                foreach (var db in dbNames)
                {
                    var fileName = "";
                    var fullPath = "";
                    allFiles.Add(fileName, fullPath);                   
                }
                //העלאה לאמזון
                Task.Run(async () =>
                {
                    var isUpload = await UploadFiles(allFiles);
                }).GetAwaiter().GetResult();
            }
            catch (Exception ex)
            {
               //
            }
           
            Console.WriteLine("---- DB Backup succesfuly --- ");
        }
    
        public static async Task<bool> UploadFolder(string pathDirectory)
        {
            IAmazonS3 s3Client = new AmazonS3Client();
            var transfer = new TransferUtilityUploadDirectoryRequest();
            transfer.BucketName = bucket;
            transfer.KeyPrefix = SubDirectoryInBucket;
            transfer.Directory = pathDirectory;
            var transferUtility = new TransferUtility();
            //כאן אפשר ליצור מנוי לפונקציה שמציגה את התקדמות ההעלאה
            //transfer.UploadDirectoryProgressEvent += displayProgressFolder;
            await transferUtility.UploadDirectoryAsync(transfer);
            return true;
        }
    
        public static async Task<bool> UploadFiles(Dictionary<string, string> pathFiles)
        {
            IAmazonS3 s3Client = new AmazonS3Client();
            var transferUtility = new TransferUtility();
    
            foreach (var file in pathFiles)
            {
                var req = new TransferUtilityUploadRequest();
                req.BucketName = bucket;
                req.FilePath = file.Value;
                req.Key = SubDirectoryInBucket + file.Key;
                //כאן אפשר ליצור מנוי לפונקציה שמציגה את התקדמות ההעלאה
                //req.UploadProgressEvent += displayProgressFile;
                await transferUtility.UploadAsync(req);
            }
            return true;
    
        }
    }
    

    }


 

בא תתחבר לדף היומי!