![]() |
בדיקה אם קובץ הוא תקייה(בשרת)
אוקיי התחברתי לftp,
השגתי את רשימת הקקבצים בעזרתftp_nlist , היתי רוצה לדעת איך אפשר לבדוק אם קובץ X הוא תקייה. תודה |
http://il2.php.net/is_dir מתכוון לזה?
|
התחברתי לשרת ftp דרך php,לאחר התחברות הוצאתי את רשימת הקבצים.
שם אני רוצה לבדוק אם הקובץ הוא תקייה.(אני צריך רק תפונקציה). is_dir לא ממש עוזרת לי(בגלל איטיות). |
תן var_dump() של זה ואני יכתוב לך איזה פונקציה
|
ציטוט:
|
אתה עושה chdir ומנסה להיכנס לאותו שם של קובץ כאילו הוא תיקייה.
אם הCHDIR החזיר אמת וזה נכנס לבפנים ז"א שזה תיקייה, אם לא אז זה לא תיקייה. עריכה: PHP קוד:
|
עשיתי משו דומה:
$file_is_dir="public_html/tal"; $contents = ftp_nlist($conn_id,$file_is_dir); if ($file_is_dir == $contents[0]) { echo "if file"; }else{ echo "is dir"; } |
עבדתי על זה איזה 5 דקות...רעיון נחמד:
HTML קוד:
<div id="shon" style="font-size: 11px; margin-bottom: 10px;"> הנה דוגמא קטנה: http://lasw.gamli.net/2.php ויש לי תמונה בשם folder.jpg בשרת כמובן. |
אך זה בדיוק בודק אם זה תיקיה או לא?
עד כמה שאני הבנתי זה פשוט מנסה לפתוח קובץ, בלי קשר לתיקיה |
ציטוט:
|
אתה מנסה לפתוח קובץ, אם הקובץ הזה לא קיים הוא יצור אותו, הפוונקציה הזאת תחזיר TRUE בכל מקרה, זאת ממש לא דרך לבדוק אם הקובץ הזה הוא תיקיה.
יש לזה פונקציות כמו is_dir שיעשו את העבודה. |
ציטוט:
בכל מקרה - לי הוא לא יוצר קובץ חדש. וגם אם הוא ייצור לאנשים אחרים, הם יוכלו להשתמש במקום ב-w ב-x (למרות שאני בטוח ב-99.9% שזה לא יוצר לאף אחד). מה שכן, הוא גם לא ציין שיווצר מצב שלא תיהיה לא תיקייה ולא קובץ כך שלא חשבתי לכיוון הזה בכלל. וגם אם הוא יצטרך יש הרבה דרכים לעשות כך שלא ייצור. עריכה: http://www.decompile.com/cpp/faq/fopen_write_append.htm ציטוט: "Create for writing. If a file by that name already exists, it will be overwritten." כלומר זה מתייחס רק כשאתה משתמש ב-fread, אז הערך ישוכתב על הערך שקיים. מה שאני לא השתמשתי. |
אפשר לעשות משהו טיפה עקום.
להשתמש בפונקציה http://il2.php.net/manual/en/function.ftp-rawlist.php היא מחזירה לך גם את הגודל של הקובץ. גודל של תקייה מופיע כ 4096,לפחות בלינוקס. אני מניח שלא סביר שיהיו קבצים אחרים ששוקלים בדיוק כך אז תוכל לעבוד עם זה עד שיתעוררו בעיות. הנושא הזה עניין אותי ואני מנסה לבדוק איך תוכנות הFTP למשל מזהות אם זו תקייה או קובץ. עוד משהו: אם בודקים גודל תקייה עם http://il2.php.net/manual/en/function.ftp-size.php מקבלים -1 , יענו שגיאה. אפשר לבדוק גם עם זה. |
תודה לכולם אפשל לנועל.
|
לצורך העניין כל הפונקציות שנכתבו עד כה כאן הם הרבה יותר איטיות מהפונקציה is_dir . היו כאן פונקציות שמתחברות לאפטיפי מחדש כדי לבדוק אם קובץ הוא תיקיה, וזה עושה לכל קובץ ברשימת הקבצים לכן כל קובץ הפונקציה הייתה מתחברת לFTP ובודקת שזה ממש לא מומלץ והרבה יותר איטי מ is_dir. אם אתה מחפש משהו מהיר ונכון זה יהיה is_dir לשם כך הוא נועד.
|
הבעיה שאני כבר מחובר לftp,למה לי להתחבר שוב עם is_dir?
|
ציטוט:
אם PHP יצרו את הפונקציה הזאת ואין לה פונקציה מקבילה זה אומר שיש טעם להשתמש בה. |
ציטוט:
|
ציטוט:
אבל פה הוא עובד מול FTP. |
אבל עד כמה שאני מבין, הוא התחבר לFTP מההתחלה בשביל לבדוק אם X הוא תיקיה.
|
ציטוט:
וIS_DIR לא משתמשת בחיבור הקיים לFTP. |
כל הזמנים הם GMT +2. הזמן כעת הוא 12:41. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ