651
צפיות
צפיות
35
תשובות
תשובות
שאךה בקשר לFSO
קראתי את המדריך המצויין של buildhome על FSO ובניתי משהו..
ועכשיו עשיתי עם הקוד הבא שיראה לי את התיקית אבא של התיקיה שאני נימצא בה,זאת השורת קוד:
Folder.ParentFolder
כמובן שליני זה יש כל מה שצריך להיות וכו…
הקוד פועל כמו שצריך אבל הבעיה היא שהוא מציג לי את כל הדרך זאת אומרת נגיד אני נימצא בתיקיה שם TEST והתיקית אבא שלה זה TESTA אז זה מציג לי ככה:
c:/site/TESTA
ואני רוצה שזה יתחיל מTESTA זה אומרת:
TESTA/
אך אני יכול לעשות את זה?
35 תשובות
קודם כל
תודה רבה. מקווה שיעזור לרבים
נסה משהו כזה (קצת ארוך אבל פשוט):
Response.Write Right(Folder.ParentFolder,Len(Folder.ParentFolder)-InStrRev(Folder.ParentFolder,"/"))&"/"
אמור לעבוד.
זה לא עוזר..
חשבתי לעשות משהו עם ספליט אבל אני לא יודע איך…
תיראו מה רציתי לעשות:
site/test/test2/test3
נגיד וזאת התיקיה ואני רוצה לחזור תיקיה אחת אחרוה…
אז חשבתי אך שהוא עם ספליט להוריד את התקיה האחרונה..
אבל אני לא ממש יודע אך לממש את זה…
תגדיר 'לא עוזר'
ניסיתי את זה (שמתי את המחרוזת ששמת כניסיון) וזה עובד מצוין.
תיראה אני אסביר מה אני רוצה לעשות..
אני מוסיף לממש ניהול של האתר של אפשרול ליצפות בכל הדפים והתיקיות באתר ולערוך אותם, כמו באתר איחסון שיש ניהול קבצים..
עכשיו אני צריך לעשות קישור שבלחיצה עליו הוא יחזיר תיקיה אחורה…
ושאמרתי לא עוזר התכוונתי שעדיין כמו מקודם זה מביא את תיקיה האב אבל גם בסוף מביא את הקונן ועוד כמה תיקיות לא רצויות…
היום שאני אחזור מבית ספר אני יביא לך שתיראה את הקוד…
מה הבעיה לעשות דבר כזה?
שבעצם נקרא 'רמה אחת למעלה'. אני בניתי מספר מערכות כאלה ומערכת כמו נענע פלאנט ולא היתה לי כל בעיה בנושא ביצוע הדבר.
שאתה ניגש לתקיה מסוימת מהתקיה הראשית אתה מפנה בכתובת למשל
showFolders.asp?path=mainFolder/images
עכשיו, כדי לעשות 'רמה אחת למעלה' אתה פשוט מוחק את כל הערך לפני ה-/ וזה בעצם ממש דומה למה שהבאתי לך (צריך להשתמש באותם הפונקציות הפשוטות).
לפי דעתי אין צורך (בכלל) במאפיין ParentFolder.
זה מה שאני רוצה לעשות..
למחוק אבל אך אני מוחק את זה?
כאילו אני רוצה שבלחיצה על כפתור זה יחזוא אחורה ולא לימחוק בשורת כתובת.
למה לא למחוק?
אתה יכול להשתמש ב-JS כדי לחזור אחורה (כמו בכפתור 'אחורה' בדפדפן)
<span style="cursor:hand;" OnClick="history.back(-1);">רמה אחת למעלה</span>
הבעיה בזה היא שנגיד ואני ירצה…
מתי שהוא להפוך אותה למשהו באתר שלי אז נגיד והמשתמש יערוך עמוד אז החזרה אחורה ע"י הדפדפן תחזיר אותו לעמוד עריכת או לכל דבר אחר…
הבנת?
אין לי בעיה לימחוק אבל אני לא רוצה כאילו אני למחוק אלה איזה שהיא פקודה…
חשבתי אולי אפשר לעשות משהו עם split אבל אני לא ממש יודע מה חח…
למה split?
עדיין לא הבנתי מה רע בהצעה הראשונה שהצעתי לך.
אני השתמשתי בה, היא יעילה ונוחה מאוד (הדרך היחידה שהגיונית לביצוע הדבר).
עשיתי כמו שאמרת ב JS וזהו..
תודה על העזרה!
עכשיו יש לי עוד שאלה.
כמה KB יש ב MB אחד?
כי נכון יש את הפקודה שבודקת גודל של קובץ ב KB אז אני רוצה שהיא תבדוק ב MB אבל אני לא זוכר כמה MB יש ב KB ב ביטים הצלחתי…
שמתי 8 במקום 1024 כי יש 8 ביטים בכל קילוביט אחד…
אז כמה מגהביט יש בכל קילוביט?
1024KB = 1MB
תראה מה עשיתי אבל זה לא פועל טוב…
if FormatNumber(File.Size/8,0)=>"1024" then filesize=""&FormatNumber(File.Size/1024,0)&"KB"
if FormatNumber(File.Size/8,0)=<"1024" then filesize=""&FormatNumber(File.Size/8,0)&"B"
if FormatNumber(File.Size/1024,0)=>"1024" then filesize=""&FormatNumber(File.Size/1048576,0)&"MB"
זה מציג לי רק MB או B או KB ….
מה הבעיה בזה?
תעשה משהו פשוט יותר
והגיוני יותר. עדיף להציג ב-MB או ב-KB.
הייתי ממליץ לעשות לגודל קבצים ב-KB ולגודל תקיות ב-MB.
If FormatNumber((File.Size/1024)/1024,0)>1 Then
filesize = FormatNumber((File.Size/1024)/1024,0)&"MB"
Else
filesize = FormatNumber(File.Size/1024,0)&"KB"
End If
אמור לעבוד.
תודה רבה זה עובד!!
עוד שאלה..
נכון יש את הקוד של הוספת תיקיה/קובץ?
האם אני יכול שהוא יפעל ללא לשים גם כונן?
כאילו זה יזה לבד את הכונן שבו הוא נימצא וכל התיקיות אב שבתוכנה נימצאת התיקיה של הקובץ..
כי נגיד וכאשר אני אקנה שטח לאחסן את האתר שלי מאיפה לי לדעת ת'קונן שבו נימצא האתר, כל תיקיות המשנה?…
ויש עוד משהו…
חחחחח היום אני מפציץ חחחחחח… שאני אדע את זה יותר טוב כבר אני לא אשאל כל כך הרבה שאלות….
עכשיו זה שאלה ששאלתי פעם של חזרה אחורה בתיקיות..
עכשיו עם JS אבל זה מחזיר אותי גם לעמודים של יצירת התיקיה…
אולי אתם יודעים אך נענע או כל אתרי האחסון עושים?
גם פשוט
תעשה משהו כזה:
FSO.CreateFolder Server.MapPath(Request.Form("newFolder"))
FSO.CreateTextFile Server.MapPath(Request.Form("newFile"))
פשוט לך…
בדיוק כמו שאני המלצתי לך
הנתיב של הצגת תקיות וקבצים נמצא בשורת הכתובות.
כדי לעשות רמה אחת למעלה מוחקים את הערך של עד ה-/ האחרון בצד ימין.
הבנתי שלימחוק אבל מה כאילו למחוק…
בשורת כתבות?
מה כל גולד ימחוק בשורת כתובת שלו את התיקיות עש שיגיע לתיקיה הרצויוה?
לא ניתן לעשות את זה בקוד??
בגלל שבאתרי האחסון לדוגמא אני לא צריך למחוק משורת הכתובת יש לחצן שלוחצים עליו והוא מחזיר אותך תיקיה אחורה..
לזה אני מתכוון.
למה אני מתכוון?
בעזרת הפונקציות שהצעתי לך בהתחלה (mid,instrrev,len) תוכל ליצור קישור של 'רמה אחת למעלה' שימחק את מה שצריך ויפנה באמת לתקיית האב.
זה מוחק אבל…
זה גפמראה לי את כל הדרך:
d:/site/gumvgum/
זה באמת מוחר את התיקיה שליפני אבל זה גם מוסיף משהו שאני לא צריך…
זה מוסיף לי כונן + עוד שני תיקיות שאני לא צריך שזה יציג…
זאת הבעיה.
עכשיו יותר מובן?…
=======> תשובה פה
זה תלוי איך אתה בוחר להציג את התקיה.
אני למשל עשיתי משהו דומה לזה:
<a href="showFiles.asp?folder=forum">forum</a>
למשל בתוך תקיית forum יש תת תקיה, אז זה יראה כך:
<a href="showFiles.asp?folder=forum/images">images</a>|סקוד
הצגת התקיות היא פשוטה ותהיה כך:
Set Folder = FSO.GetFolder(Server.MapPath(Request.QueryString("folder")))
לכן אין צורך בנתיב המלא כאשר אפשר להשתמש בנתיב 'מקוצר'.
:-
זה מה שגם אני עשיתי…
הינה תיראה:
<%
Dim FSO
'פתיחת אוביקט FSO
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
'לקיחת תיקיה לפי DIR
Set Folder = FSO.GetFolder(Server.MapPath("../"&dir&""))%>
וליפני זה יש את המשתנה של ה dir שמוגדר משורת הכתובת ע"י ריקיוז.
ככה עשיתי שניכנסים לתיקיות זה:
<a href="?dir="&SubFolder.Name&" class="overTOfile">"&SubFolder.Name&"</a>
אבל שאני חוזר אחורה עם הקוד שהבאת לי זה מראה לי את כל הדרך כולל כוננים הינה תמונת מסך(תמונה מצורפת)
אז משהו אצלך לא טוב
כי אתה משנה רק את המשתנה בשורת הכתובות ולא שום דבר אחר. תבדוק היטב אצלך את הקוד.
עוד שאלה..
שאני מוסיך קובץ ואני משאיר אותו ריק זה כותב לי את השגיאה הבאה:
Error Type:
Microsoft VBScript runtime (0x800A003E)
Input past end of file
/edit_site/editfile_post.asp, line 24
זאת שורה 24:
Set File = FSO.OpenTextFile(server.mapPath(Path),1,False)
editdata= File.ReadAll
File.Close
גם בקוד הבאה יש אותה שגיאה (הקוד שהבאתי למעלה) אז הבאתי אותו.
ושניהם אני כמעת בטוח מתיחסים לזה:
File.ReadAll
ואני הבנתי את הבעיה, היא אומרת שאין מידע בקובץ..
אז השאלה שלי היא אך אני יכול להגיד לזה שזה ישמור את זה או שיראה את המלל של הרובץ גם אם אין מלל כאילו שיציג טופס עריכה ריק…
השאלה השניה שלי היא נגיד והנתיב שהבאתי לא טוב או שהקובץ לא נימצא אך אני יכול לעשות כמו בשאילתת SQL eof or bof?
הכל כתוב לך במדריך
רק צריך למצוא.
אתה צריך לבדוק אם יש מידע בקובץ ואז להציב במשתנה את המידע שבו.
If FSO.FileExists(server.mapPath(Path)) Then
Set File = FSO.OpenTextFile(server.mapPath(Path),1,False)
If not File.AtEndOfStream Then
editdata= File.ReadAll
Else
editdata= "הקובץ ריק"
End If
File.Close
End If
אמור לעבוד
כן תודה…
נזכרתי שעשיתי את זה כבר..
שבניתי בדקתי אם כבר יש קובץ או תיקיה שם הזה, זה אותו רעיון לפי מה שאני עכשיו רואה.
תודה לך!!!!
אתה עזרתה לי הרבההההההההההההההההה, אפשר להגיד בהכל (אני מדבר גם על המדריך שלך. )
הצלחתי לעשות עם split !!
עשיתי בסוף עם split את זה וזה פועל כמו שצריך….
תודה בכל מיקרה על העזרה הרבבהההההה שנתת לי!!!
איפה המדריך?!
איזה מדריך? FSO??
אםם כן אז הוא פה באתר..
במדור ASP.
buildhome כתב אותו..
אהההה.
הנה הוא…
BH (דביר:)) אני מוריד בפנייך את הכובע… מדריך ממש מפורט… ממש מעולה
כן צדריך מצויין ראוים שהוא השקיע! (
וגם הוא יודע טוב++++++= את זה.
מדריך***
חחח רק עכשיו ראיתי…
תודה רבה
מקווה שיהיה עזר לרבים!
קרא לי בילד