597
צפיות
צפיות
13
תשובות
תשובות
העלאת קבצים לשרת
זה הקקישור מתוך האתר שלכם
https://www.webmaster.org.il/article.asp?id=6
האפליקציה לא עובדת
מציג לי את השיאה הזאת
error 'ASP 0175 : 80004005'
למה??
זה הקקישור מתוך האתר שלכם
https://www.webmaster.org.il/article.asp?id=6
האפליקציה לא עובדת
מציג לי את השיאה הזאת
error 'ASP 0175 : 80004005'
למה??
13 תשובות
חסרים פרטים
איזי פרטים חסרים?
שאלה למנהלי הפורם בתקווה שיענו
יש לי בעיה עם העלאת קבצים השרת, והשתמשי במאמר שיש לכם באתר עם אוביקט ה ASPUpload, אבל למזלי הרע לא עבד והוא מציג הודעת שגיאה הזאת:
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/UploadScript1.asp, line 6
Count = Upload.Save "c:filesdata"
מה הקוד שלך?
תפסת אותי ביום לא הכי סבלני, ואני ממש לא אוהב לשאול את אותה שאלה פעמיים.
קרא שוב את הקישור שנתתי לך קודם, ותיישם את הדרישות שמוצגות שם – באופן ספציפי – מה הקוד הרלוונטי, מה הודעת השגיאה במלואה, ולמען השם – תיישר את הקוד לשמאל. (ישור לשמאל מתבצע ע"י לחיצה על האייקון השמאלי ביותר בשורה השניה של האייקונים במסך הוספת ההודעה. כדי לישר לימין חזרה, צריך ללחוץ עליו שוב).
הקוד…
הקוד
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save "c:filesdata"
%>
Files:<BR>
<%
For Each File in Upload.Files
Response.Write File.Name &"= "& File.Path &" ("& File.Size &" bytes)<BR>"
Next
%>
</BODY>
</HTML>
השגיאה
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/UploadScript1.asp, line 6
Count = Upload.Save "c:filesdata"
ישרתי את הקוד לשמאל אבל
לא עבד הישור
הבעיה פשוטה
קודם כל, הנה קישור לאתר של חברת persits, למדריך שלהם:
http://www.aspupload.com/manual_simple.html
דבר שני, רצוי מאוד לפני שנכנסים לפאניקה ומחליטים שלא יודעים, לקרוא את השגיאה שASP נותנת. היא בד"כ מאוד ברורה. והנה שים לב.
השגיאה גם אומרת לך שהיא בשורה 6 (אם כי בשפות סקריפט, לא תמיד מספר השורה שהוא נתקע בה היא באמת שורת השגיאה), ואומרת לך אפילו באיזה משפט.
אז צריך פשוט להכנס למאגר מידע של חברת פרסיטס ולראות את המשפט המדובר.
בכל אופן חסרות לך סוגריים:
Upload.Save("c:filesdata")
הקוד עבד עם ה Upload.SaveVirtual
אבל , איך אוכל למחוק אותו מהתקיה?
ובכן, כמה דברים
1. אני לא חושב שהתוכנת העלאת קבצים הזאת משמשת גם למחיקה. למחיקה, ראה ריפרנס של עבודה עם קבצים עם האובייקט המובנה של ASP.
כאן יש לך הסבר: http://www.sigall.co.il/asp/asp13.asp
לשם ספריה וירטואלית, אתה יכול להשתמש ב- mappath.
2. ניסית לשמור SAVE רגיל, עם סוגריים ולא הצליח? כי למיטב זכרוני ASPUPLOAD מחייבת סוגריים.
אם הצלחת רק בשמירה בספריה וירטואלית, משמע ששם הספריה הזה שניסית, לא קיים פיזית אלא רק מוגדר וירטואלית בIIS.
התקיה קיימת אני רואה אותו בשרת
אני רואה אותה ב FTP, אבל רק ב Upload.SaveVirtual עבד.
ניסית גם עם סוגרים ובלי סוגרים ולא עבד רק ב שמירת וירטואלית?
שאלה 1
איך עושים את שמירה עם ה mappath?
שאלה 2
האם אוביקט ה FSO רק דרכו מוחקים מהתקיה קבצים או יש דרך אחרת?
שאלה 3
הדרך המקצועית להעלאת קבצים ומחיקתם היא בשמירת הקבצים רק קובך הנתונים ולא בשרת?
או שחייביים לשמור גם ההסית נתונים ובשרת?
תודה
אז ככה:
1. saveVirtual בעצם מבצעת את אותה הפעולה שמבצעת save בשילוב עם mapPath – היא שומרת את הקובץ לנתיב ויראטואלי שהיא מקבלת (מבחינתך, בקוד asp, נתיב וירטואלי הוא נתיב יחסי לנתיב שבו נמצא קובץ ה asp עצמו).
המתודה Server.MapPath מקבלת נתיב יחסי כזה ומחזירה את הנתיב האבסולוטי שאליו הוא מצביע – שזה בדיוק מה שמצפה לקבל המתודה save – נתיב אבסולוטי.
2. ניתן לבצע מחיקה גם ע"י האובייקט aspupload.
3. לרוב, הדרך הנכונה להעלות קבצים לשרת היא להעלות את הקובץ לתיקיה מסויימת, ואם יש צורך, לשמור את שאר המידע ב DB. כמובן, לפעמים יש אילוצים שלא ניתן לעקוף אותם ומחייבים אותך כמתכנת לעשות דברים אחרים. הכל תלוי בדרישות ובאילוצים.
אפשר לקבל דוגמא
איך עושים זאת עם ה MAPPATH בקוד אפשר לראות?
אז למה לא עבד לי ה SAVE , התקיה של הקבצים אני רואה אותה בשרת ,
מה הכוונה שהתקיה "לא קיים פיזית אלא רק מוגדר וירטואלית בIIS"?
תודה
תיקיה וירטואלית מול תיקיה פיזית.
תיקיה פיזית היא תיקיה שנמצאת ממש על המחשב, וניתן לגשת אליה דרך myComputer, לבחור את הכונן, וממש לראות אותה ב windows exploere.
תיקיה וירטואלית היא בעצם רפרנס לתיקיה פיזית. כאשר מגדירים תיקיה וירטואלית, בעצם מגדירים הפניה לתיקיה שקיימת פיזית על המחשב. אם לדוגמא תסתכל על שורת הכתובת של הדפדפן, תראה שם את הכתובת https://www.webmaster.org.il/forums/forum.asp?id=2.
התיקיה forums היא תיקיה וירטואלית שמוגדרת בשרת שמאחסן את webmaster, והיא בעצם מפנה את השרת לתיקיה הפיזית שבה שמורים הקבצים. השם שלה יכול להיות forums, אבל באותה מידה הוא גם יכול להיות moshe או אפילו nassralla – זה ממש לא משנה – כי הגולש רואה רק את השם של התיקיה הוירטואלית.
כל מה שמתבצע ב asp מתבצע בעצם בתיקיה הוירטואלית, אבל כשרוצים לטפל בקבצים (וזה לא משנה אם מדובר על העלאה של קובץ לשרת, או מחיקה של קובץ, או סתם לקרוא קובץ מהדיסק), צריך את הנתיב הפיזי של הקובץ. בשביל זה קיימת השיטה mapPath של האובייקט Server, שהיא מקבלת נתיב וירטואלי ומחזירה נתיב פיזי.
ב aspupload, המתודה saveVirtual יודעת לקבל נתיב וירטואלי ולשמור לנתיב פיזי, אבל המתודה save יודעת רק לקבל נתיב פיזי, ולכן צריך להשתמש ב server.MapPath בשביל לתת לה את הנתיב הנכון:
Dim VirtualDirectory, PhisicalDirectory, oUpload
VirtualDirectory = "./" " the directory that this file is in
PhisicalDirectory = Server.MapPath(VirtualDirectory)
' Set the upload object….
oUpload.save PhisicalDirectory