עזרה בקוד
-
יש לי כאן קוד שאמור לעלות קובץ php גדול ומשום מה זה מעלה רק חלק קטן ממנו (באמצע) ובלי שום תגובה מישהו יכול לעזור?
<?php // הגדרות קבועות (חובה לעדכן) $API_BASE_URL = "https://www.call2all.co.il/ym/api/"; $TOKEN = ""; // טוקן הגישה $REMOTE_FILE_URL = "-כאן צריך להשים את הכתובת (בכוונה שיניתי( "; // כתובת הקובץ המקורית $TARGET_PATH = "ivr2:/200/uploaded_file.mp3"; // נתיב היעד (חובה ivr2:) [3, 4] $MAX_FILE_SIZE_MB = 150; // הגבלה לגודל הקובץ $CHUNK_SIZE = 5 * 1024 * 1024; // 5MB למקטע (קטן מ-50MB המגבלה המקסימלית) [3, 4] // הגדרות קובץ מקומיות $QQUUID = uniqid('', true); // מזהה ID רנדומלי שיש ליצור לפני הבקשה הראשונה [5, 7] $TEMP_DIR = 'temp_uploads/'; $TEMP_FILE_PATH = $TEMP_DIR . basename($TARGET_PATH); $MAX_FILE_SIZE_BYTES = $MAX_FILE_SIZE_MB * 1024 * 1024; // פונקציית שליחת בקשת cURL (מותאם לשיטת POST multipart/form-data) function send_curl_request($url, $fields, $is_done_request = false) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if (!$is_done_request) { // שלב א': העלאת מקטע curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); } // שלב ב': בקשת חיבור (UploadFile?done) היא לרוב GET או POST עם פרמטרים ב-URL, // כאן נשתמש ב-GET אם הפרמטרים כבר ב-URL $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code != 200) { throw new Exception("HTTP Error {$http_code} | Response: " . $response); } return json_decode($response, true); } // 1. הורדת קובץ חיצונית ושמירה מקומית + בדיקת גודל if (!is_dir($TEMP_DIR)) { mkdir($TEMP_DIR, 0777, true); } if (!@file_put_contents($TEMP_FILE_PATH, @file_get_contents($REMOTE_FILE_URL))) { die("שגיאה בהורדה או שמירה מקומית של הקובץ."); } $file_size = filesize($TEMP_FILE_PATH); $file_name = basename($TEMP_FILE_PATH); if ($file_size > $MAX_FILE_SIZE_BYTES) { unlink($TEMP_FILE_PATH); die("הקובץ גדול מהמגבלה המוגדרת."); } // חישוב מקטעים $total_parts = ceil($file_size / $CHUNK_SIZE); $qq_total_parts_api = $total_parts + 1; // כולל בקשת החיבור (done) [5-8] // -------------------------------------------------- // שלב א': העלאת מקטעי הקובץ (Chunks) // -------------------------------------------------- $handle = fopen($TEMP_FILE_PATH, "r"); $chunk_index = 0; $byte_offset = 0; $upload_success = true; if ($handle) { while (!feof($handle)) { $chunk_data = fread($handle, $CHUNK_SIZE); $current_chunk_size = strlen($chunk_data); if ($current_chunk_size == 0) { break; } // יצירת קובץ זמני עבור המקטע הנוכחי (דרוש עבור cURL) $temp_chunk_file = $TEMP_DIR . "chunk_{$chunk_index}"; file_put_contents($temp_chunk_file, $chunk_data); // פרמטרים הנדרשים לבקשת העלאת מקטע [5, 7] $post_fields = [ 'token' => $TOKEN, 'path' => $TARGET_PATH, 'qquuid' => $QQUUID, 'qqpartindex' => $chunk_index, 'qqpartbyteoffset' => $byte_offset, 'qqchunksize' => $current_chunk_size, 'qqtotalparts' => $qq_total_parts_api, 'qqtotalfilesize' => $file_size, 'qqfilename' => $file_name, 'qqfile' => new CURLFile($temp_chunk_file, mime_content_type($temp_chunk_file), $file_name) // העלאת המקטע הנוכחי // ניתן להוסיף convertAudio, autoNumbering ו-tts כאן אם צריך [3-5, 7] ]; try { $response = send_curl_request($API_BASE_URL . 'UploadFile', $post_fields); if ($response['responseStatus'] !== 'OK') { $upload_success = false; break; } } catch (Exception $e) { $upload_success = false; break; } // מחיקת קובץ המקטע הזמני unlink($temp_chunk_file); $chunk_index++; $byte_offset += $current_chunk_size; } fclose($handle); } else { die("שגיאה: לא ניתן לקרוא את הקובץ המקומי."); } // -------------------------------------------------- // שלב ב': סיום העלאה ובקשת חיבור לקבצים // -------------------------------------------------- if ($upload_success) { // פרמטרים הנדרשים לבקשת החיבור [6, 8] $done_params = [ 'token' => $TOKEN, 'path' => $TARGET_PATH, 'qquuid' => $QQUUID, 'qqfilename' => $file_name, 'qqtotalfilesize' => $file_size, 'qqtotalparts' => $qq_total_parts_api, // אם הועברו convertAudio, autoNumbering, tts יש לצרף גם לכאן [6, 8] ]; $query_string = http_build_query($done_params); $done_url = $API_BASE_URL . "UploadFile?done&" . $query_string; try { // שליחת בקשה לחיבור הקטעים (UploadFile?done) $response_data = send_curl_request($done_url, null, true); if (isset($response_data['responseStatus']) && $response_data['responseStatus'] === 'OK') { // פעולת ה-API הושלמה בהצלחה // תוצאה: $response_data מכילה path ו-size [9, 10] } else { // שגיאה בחיבור הקבצים } } catch (Exception $e) { // שגיאה בבקשת החיבור } } else { // העלאת המקטעים נכשלה } // ניקוי הקובץ הזמני בשרת המקומי שלך if (file_exists($TEMP_FILE_PATH)) { unlink($TEMP_FILE_PATH); } ?> -
יש לי כאן קוד שאמור לעלות קובץ php גדול ומשום מה זה מעלה רק חלק קטן ממנו (באמצע) ובלי שום תגובה מישהו יכול לעזור?
<?php // הגדרות קבועות (חובה לעדכן) $API_BASE_URL = "https://www.call2all.co.il/ym/api/"; $TOKEN = ""; // טוקן הגישה $REMOTE_FILE_URL = "-כאן צריך להשים את הכתובת (בכוונה שיניתי( "; // כתובת הקובץ המקורית $TARGET_PATH = "ivr2:/200/uploaded_file.mp3"; // נתיב היעד (חובה ivr2:) [3, 4] $MAX_FILE_SIZE_MB = 150; // הגבלה לגודל הקובץ $CHUNK_SIZE = 5 * 1024 * 1024; // 5MB למקטע (קטן מ-50MB המגבלה המקסימלית) [3, 4] // הגדרות קובץ מקומיות $QQUUID = uniqid('', true); // מזהה ID רנדומלי שיש ליצור לפני הבקשה הראשונה [5, 7] $TEMP_DIR = 'temp_uploads/'; $TEMP_FILE_PATH = $TEMP_DIR . basename($TARGET_PATH); $MAX_FILE_SIZE_BYTES = $MAX_FILE_SIZE_MB * 1024 * 1024; // פונקציית שליחת בקשת cURL (מותאם לשיטת POST multipart/form-data) function send_curl_request($url, $fields, $is_done_request = false) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if (!$is_done_request) { // שלב א': העלאת מקטע curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); } // שלב ב': בקשת חיבור (UploadFile?done) היא לרוב GET או POST עם פרמטרים ב-URL, // כאן נשתמש ב-GET אם הפרמטרים כבר ב-URL $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code != 200) { throw new Exception("HTTP Error {$http_code} | Response: " . $response); } return json_decode($response, true); } // 1. הורדת קובץ חיצונית ושמירה מקומית + בדיקת גודל if (!is_dir($TEMP_DIR)) { mkdir($TEMP_DIR, 0777, true); } if (!@file_put_contents($TEMP_FILE_PATH, @file_get_contents($REMOTE_FILE_URL))) { die("שגיאה בהורדה או שמירה מקומית של הקובץ."); } $file_size = filesize($TEMP_FILE_PATH); $file_name = basename($TEMP_FILE_PATH); if ($file_size > $MAX_FILE_SIZE_BYTES) { unlink($TEMP_FILE_PATH); die("הקובץ גדול מהמגבלה המוגדרת."); } // חישוב מקטעים $total_parts = ceil($file_size / $CHUNK_SIZE); $qq_total_parts_api = $total_parts + 1; // כולל בקשת החיבור (done) [5-8] // -------------------------------------------------- // שלב א': העלאת מקטעי הקובץ (Chunks) // -------------------------------------------------- $handle = fopen($TEMP_FILE_PATH, "r"); $chunk_index = 0; $byte_offset = 0; $upload_success = true; if ($handle) { while (!feof($handle)) { $chunk_data = fread($handle, $CHUNK_SIZE); $current_chunk_size = strlen($chunk_data); if ($current_chunk_size == 0) { break; } // יצירת קובץ זמני עבור המקטע הנוכחי (דרוש עבור cURL) $temp_chunk_file = $TEMP_DIR . "chunk_{$chunk_index}"; file_put_contents($temp_chunk_file, $chunk_data); // פרמטרים הנדרשים לבקשת העלאת מקטע [5, 7] $post_fields = [ 'token' => $TOKEN, 'path' => $TARGET_PATH, 'qquuid' => $QQUUID, 'qqpartindex' => $chunk_index, 'qqpartbyteoffset' => $byte_offset, 'qqchunksize' => $current_chunk_size, 'qqtotalparts' => $qq_total_parts_api, 'qqtotalfilesize' => $file_size, 'qqfilename' => $file_name, 'qqfile' => new CURLFile($temp_chunk_file, mime_content_type($temp_chunk_file), $file_name) // העלאת המקטע הנוכחי // ניתן להוסיף convertAudio, autoNumbering ו-tts כאן אם צריך [3-5, 7] ]; try { $response = send_curl_request($API_BASE_URL . 'UploadFile', $post_fields); if ($response['responseStatus'] !== 'OK') { $upload_success = false; break; } } catch (Exception $e) { $upload_success = false; break; } // מחיקת קובץ המקטע הזמני unlink($temp_chunk_file); $chunk_index++; $byte_offset += $current_chunk_size; } fclose($handle); } else { die("שגיאה: לא ניתן לקרוא את הקובץ המקומי."); } // -------------------------------------------------- // שלב ב': סיום העלאה ובקשת חיבור לקבצים // -------------------------------------------------- if ($upload_success) { // פרמטרים הנדרשים לבקשת החיבור [6, 8] $done_params = [ 'token' => $TOKEN, 'path' => $TARGET_PATH, 'qquuid' => $QQUUID, 'qqfilename' => $file_name, 'qqtotalfilesize' => $file_size, 'qqtotalparts' => $qq_total_parts_api, // אם הועברו convertAudio, autoNumbering, tts יש לצרף גם לכאן [6, 8] ]; $query_string = http_build_query($done_params); $done_url = $API_BASE_URL . "UploadFile?done&" . $query_string; try { // שליחת בקשה לחיבור הקטעים (UploadFile?done) $response_data = send_curl_request($done_url, null, true); if (isset($response_data['responseStatus']) && $response_data['responseStatus'] === 'OK') { // פעולת ה-API הושלמה בהצלחה // תוצאה: $response_data מכילה path ו-size [9, 10] } else { // שגיאה בחיבור הקבצים } } catch (Exception $e) { // שגיאה בבקשת החיבור } } else { // העלאת המקטעים נכשלה } // ניקוי הקובץ הזמני בשרת המקומי שלך if (file_exists($TEMP_FILE_PATH)) { unlink($TEMP_FILE_PATH); } ?>לא מבין בזה, אבל הgpt אומר שיש כמה טעויות.
-
@עידו לא עברתי על הכל אבל כבר ראיתי כמה קשקושים
-
@121244 בד"כ הוא לא מקשקש אם מביאים לו תיעוד מלא כמו שהבאתי. אבל אם אתה מבין בזה וראית קשקושים, אז לא אתווכח.
-
@121244 תנסה לבקש קוד תקין ותראה מה יתן, מה יש להפסיד?