דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#

עזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 4 כותבים 543 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD dovid

    באמת על פניו נראה תמוה, אם תסכים לשתף אותי בטוקן שלך במייל אשמח.
    בינתיים סידרתי את הקוד שיהיה יותר קל לבדוק:

    public class YemotUploader
    {
        // הגדרה אחת בלבד של גודל הצ'אנק
        public static readonly int ChunkSizeBytes = 8000000; // 8MB
    
        public YemotUploader(string fullFileName)
        {
            FileFullName = fullFileName;
            FileName = Path.GetFileName(fullFileName);
            FileSize = new FileInfo(FileFullName).Length;
            PartCount = (int)Math.Ceiling((double)FileSize / ChunkSizeBytes);
        }
    
        //static yemot setting
        public string tokenYemot { get; set; }
        public string path { get; set; }
    
        //preference per upload
        public bool convertAudio { get; set; } = false;
        public bool autoNumbering { get; set; } = false;
    
        //file prop
        public string FileFullName { get; set; }
        public string FileName { get; set; }
        public long FileSize { get; set; }
    
        //parts props
        public long PartSize { get; set; }
        public int PartCount { get; set; }
        public string qquuid { get; set; }
    
        public async Task<string> UploadFileAsync()
        {
            if (FileSize <= ChunkSizeBytes)
                return await UploadSmallFileAsync();
            else
                return await UploadLargeFileAsync();
        }
    
        private async Task<string> UploadSmallFileAsync()
        {
            using (var httpClient = new HttpClient())
            using (var formData = new MultipartFormDataContent())
            {
                AddGeneralInfo(formData);
                formData.Add(new ByteArrayContent(File.ReadAllBytes(FileFullName)), "file");
    
                var response = await httpClient.PostAsync("https://www.call2all.co.il/ym/api/UploadFile", formData);
                return await response.Content.ReadAsStringAsync();
            }
        }
    
        private async Task UploadPart(int index, long offset, byte[] part)
        {
            using (var content = new MultipartFormDataContent())
            using (var httpClient = new HttpClient())
            {
                AddGeneralInfo(content);
                content.Add(new StringContent("yemot-admin"), "uploader");
                content.Add(new StringContent(qquuid), "qquuid");
                content.Add(new StringContent(FileName), "qqfilename");
                content.Add(new StringContent(FileSize.ToString()), "qqtotalfilesize");
                content.Add(new StringContent(PartCount.ToString()), "qqtotalparts");
                content.Add(new StringContent(PartSize.ToString()), "qqchunksize");
                content.Add(new StringContent(offset.ToString()), "qqpartbyteoffset");
                content.Add(new StringContent(index.ToString()), "qqpartindex");
                content.Add(new ByteArrayContent(part), "qqfile");
    
                var res = await httpClient.PostAsync("https://www.call2all.co.il/ym/api/UploadFile", content);
                Console.WriteLine($"Response part {index}: {await res.Content.ReadAsStringAsync()}");
            }
    
        }
    
        private async Task<string> UploadLargeFileAsync()
        {
            var qquuid = Guid.NewGuid().ToString();
            var index = 0;
    
            foreach (var chunk in ReadInChunks(FileFullName))
            {
                await UploadPart(index, index * PartSize, chunk);
                index++;
            }
    
            using (var httpClient = new HttpClient())
            {
                var finalFormData = new FormUrlEncodedContent(new Dictionary<string, string>
                {
                    { "token", tokenYemot },
                    { "path", path },
                    { "uploader", "yemot-admin" },
                    { "convertAudio", convertAudio ? "1" :"0" },
                    { "autoNumbering", autoNumbering ? "1" :"0" },
                    { "qquuid", qquuid },
                    { "qqfilename", FileName },
                    { "qqtotalfilesize", FileSize.ToString() },
                    { "qqtotalparts", PartCount.ToString() }
                });
    
                try
                {
                    var doneResponse = await httpClient.PostAsync(
                        "https://www.call2all.co.il/ym/api/UploadFile?done",
                        finalFormData
                    );
    
                    var responseText = await doneResponse.Content.ReadAsStringAsync();
                    Console.WriteLine($"Done response: {responseText}");
    
                    return responseText;
                }
                catch(System.Net.WebException ex)
                {
                    Console.WriteLine($"Error in done request: {ex.Message}");
                    //get response
                    var responseText = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                    Console.WriteLine($"Response: {responseText}");
                    throw;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error in done request: {ex.Message}");
                    throw;
                }
            }
        }
    
        private void AddGeneralInfo(MultipartFormDataContent content)
        {
            content.Add(new StringContent(tokenYemot), "token");
            content.Add(new StringContent(path), "path");
            content.Add(new StringContent(convertAudio ? "1" : "0"), "convertAudio");
            content.Add(new StringContent(autoNumbering ? "1" : "0"), "autoNumbering");
        }
    
        private IEnumerable<byte[]> ReadInChunks(string filePath)
        {
            using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                var buffer = new byte[ChunkSizeBytes];
                int bytesRead;
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
                    yield return buffer.Take(bytesRead).ToArray();
            }
        }
    }
    
    אבייא מנותק
    אבייא מנותק
    אביי
    כתב ב נערך לאחרונה על ידי
    #5

    @dovid כתב בעזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#:

    אם תסכים לשתף אותי בטוקן שלך במייל אשמח

    תודה!
    שלחתי במייל

    ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
    הלינקיה שלי https://abaye.co/link.html

    I תגובה 1 תגובה אחרונה
    1
    • dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #6

      @אביי אני מקבל את אותה שגיאה גם בנוד (וגם שמה זה עובד במכה אחת), אז הבעיה היא לא בקוד.
      ייתכן שזו בעיה במערכת ימות?

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      תגובה 1 תגובה אחרונה
      2
      • אבייא אביי

        @dovid כתב בעזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#:

        אם תסכים לשתף אותי בטוקן שלך במייל אשמח

        תודה!
        שלחתי במייל

        I מנותק
        I מנותק
        ivrtikshoret
        כתב ב נערך לאחרונה על ידי
        #7

        @אביי
        איזה path כתבת?

        אבייא תגובה 1 תגובה אחרונה
        2
        • I ivrtikshoret

          @אביי
          איזה path כתבת?

          אבייא מנותק
          אבייא מנותק
          אביי
          כתב ב נערך לאחרונה על ידי
          #8

          איזה path כתבת?

          feb52c37-3768-42db-b040-15af490b2f99-image.png

          ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
          הלינקיה שלי https://abaye.co/link.html

          צדיק תמיםצ תגובה 1 תגובה אחרונה
          0
          • אבייא אביי

            איזה path כתבת?

            feb52c37-3768-42db-b040-15af490b2f99-image.png

            צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            כתב ב נערך לאחרונה על ידי צדיק תמים
            #9

            @אביי לא אמור להיות לוכסן בהתחלה (אבל לא בטוח שזו הבעיה)
            ef0eb909-c2a2-4aa3-8dbb-f3260c27a7d7-CleanShot 2024-11-07 at 21.05.15@2x.png

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            אבייא תגובה 1 תגובה אחרונה
            0
            • צדיק תמיםצ צדיק תמים

              @אביי לא אמור להיות לוכסן בהתחלה (אבל לא בטוח שזו הבעיה)
              ef0eb909-c2a2-4aa3-8dbb-f3260c27a7d7-CleanShot 2024-11-07 at 21.05.15@2x.png

              אבייא מנותק
              אבייא מנותק
              אביי
              כתב ב נערך לאחרונה על ידי
              #10

              @צדיק-תמים זה לא משנה בימות, ובהתחלה זה היה בלי, והוספתי כי אמרתי אולי זה הבעיה..

              ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
              הלינקיה שלי https://abaye.co/link.html

              צדיק תמיםצ תגובה 1 תגובה אחרונה
              0
              • אבייא אביי

                @צדיק-תמים זה לא משנה בימות, ובהתחלה זה היה בלי, והוספתי כי אמרתי אולי זה הבעיה..

                צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                כתב ב נערך לאחרונה על ידי צדיק תמים
                #11

                @אביי האם דרך אתר הניהול החדש של ימות אתה מצליח להעלות את הקובץ הזה עם מספור אוטומטי לנתיב הזה?

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                אבייא תגובה 1 תגובה אחרונה
                1
                • צדיק תמיםצ צדיק תמים

                  @אביי האם דרך אתר הניהול החדש של ימות אתה מצליח להעלות את הקובץ הזה עם מספור אוטומטי לנתיב הזה?

                  אבייא מנותק
                  אבייא מנותק
                  אביי
                  כתב ב נערך לאחרונה על ידי אביי
                  #12

                  @צדיק-תמים מהאתר החדש עובד,

                  בדקתי גם במערכת בשרת אחר (פרייבט) ואותו הדבר,

                  מה שכן שמתי לב שם, שימות עצמם רושמים את הpath כך : ivr/22 (ניסיתי, ועובד בקטנים, ואותה שגיאה בהעלאה בחלקים..)

                  יש עניין להביא cURL של אחד החלקים? (מהאתר החדש)

                  ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
                  הלינקיה שלי https://abaye.co/link.html

                  dovidD תגובה 1 תגובה אחרונה
                  1
                  • אבייא אביי

                    @צדיק-תמים מהאתר החדש עובד,

                    בדקתי גם במערכת בשרת אחר (פרייבט) ואותו הדבר,

                    מה שכן שמתי לב שם, שימות עצמם רושמים את הpath כך : ivr/22 (ניסיתי, ועובד בקטנים, ואותה שגיאה בהעלאה בחלקים..)

                    יש עניין להביא cURL של אחד החלקים? (מהאתר החדש)

                    dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #13

                    @אביי כתב בעזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#:

                    יש עניין להביא cURL של אחד החלקים? (מהאתר החדש)

                    ברור שיש עניין, אבל תוריד את הקוקיז/טוקן לפני הדבקה בפורום.

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    אבייא תגובה 1 תגובה אחרונה
                    1
                    • dovidD dovid

                      @אביי כתב בעזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#:

                      יש עניין להביא cURL של אחד החלקים? (מהאתר החדש)

                      ברור שיש עניין, אבל תוריד את הקוקיז/טוקן לפני הדבקה בפורום.

                      אבייא מנותק
                      אבייא מנותק
                      אביי
                      כתב ב נערך לאחרונה על ידי dovid
                      #14

                      @dovid

                      curl ^"https://private.call2all.co.il/ym/api//UploadFile^" ^
                        -H ^"Accept: application/json^" ^
                        -H ^"Accept-Language: he-IL,he;q=0.9^" ^
                        -H ^"Cache-Control: no-cache^" ^
                        -H ^"Connection: keep-alive^" ^
                        -H ^"Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryIMbkXAPvau1ArzUz^" ^
                        -H ^"Cookie: XXXXXXXXXX
                        -H ^"DNT: 1^" ^
                        -H ^"Origin: https://private.call2all.co.il^" ^
                        -H ^"Referer: https://private.call2all.co.il/yemot-admin-g1/^" ^
                        -H ^"Sec-Fetch-Dest: empty^" ^
                        -H ^"Sec-Fetch-Mode: cors^" ^
                        -H ^"Sec-Fetch-Site: same-origin^" ^
                        -H ^"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36^" ^
                        -H ^"X-Requested-With: XMLHttpRequest^" ^
                        -H ^"sec-ch-ua: ^\^"Chromium^\^";v=^\^"130^\^", ^\^"Google Chrome^\^";v=^\^"130^\^", ^\^"Not?A_Brand^\^";v=^\^"99^\^"^" ^
                        -H ^"sec-ch-ua-mobile: ?0^" ^
                        -H ^"sec-ch-ua-platform: ^\^"Windows^\^"^" ^
                        --data-raw ^"------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"uploader^\^"^
                      
                      ^
                      
                      yemot-admin^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"token^\^"^
                      
                      ^
                      
                      XXXXXXXXXXXXXXXXX^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"path^\^"^
                      
                      ^
                      
                      ivr/22/^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"convertAudio^\^"^
                      
                      ^
                      
                      0^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"autoNumbering^\^"^
                      
                      ^
                      
                      true^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqpartindex^\^"^
                      
                      ^
                      
                      0^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqpartbyteoffset^\^"^
                      
                      ^
                      
                      0^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqchunksize^\^"^
                      
                      ^
                      
                      4000000^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqtotalparts^\^"^
                      
                      ^
                      
                      18^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqtotalfilesize^\^"^
                      
                      ^
                      
                      70504094^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqfilename^\^"^
                      
                      ^
                      
                      ^מ^פ^ע^ל ^ה^פ^ו^ר^מ^ט^י^ם ^מ^מ^ז^ג ^א^ו^ד^י^ו ^ה^ק^ל^ט^ה ^א^ר^ו^כ^ה+^ה^ק^ל^ט^ה ^א^ר^ו^כ^ה+^ש^מ^ח^ת ^ח^ג+^ש^ח^ר ^ק^מ^ת^י.wav^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qquuid^\^"^
                      
                      ^
                      
                      908c3432-3081-45ee-b778-91e1248902f4^
                      
                      ------WebKitFormBoundaryIMbkXAPvau1ArzUz^
                      
                      Content-Disposition: form-data; name=^\^"qqfile^\^"; filename=^\^"blob^\^"^
                      
                      Content-Type: application/octet-stream^
                      
                      ^
                      
                      RIFF^–^Î3^WAVEfmt ^^
                      

                      מעניין שבתגובה התקינה, הערך שחוזר בשגיאה כnull, חוזר כnull גם כן.. (ייתכן שאין קשר, והשגיאה בכלל לא קשורה לערך הזה..)

                      {
                          "success": true,
                          "uuid": "908c3432-3081-45ee-b778-91e1248902f4",
                          "uploadName": null
                      }
                      

                      ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
                      הלינקיה שלי https://abaye.co/link.html

                      תגובה 1 תגובה אחרונה
                      0
                      • אבייא מנותק
                        אבייא מנותק
                        אביי
                        כתב ב נערך לאחרונה על ידי
                        #15

                        עדכון:

                        שלחתי פנייה לימות המשיח, והבעיה אכן לא היתה המחלקות השונות אלא איפשהו בשרת של ימות, לטענתם התקלה סודרה,

                        ומבדיקה שלי אצלי, אכן כעת זה עובד כמו שצריך,

                        ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
                        הלינקיה שלי https://abaye.co/link.html

                        תגובה 1 תגובה אחרונה
                        6
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


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

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום