שלח תשובה

זירת השאלות

597
צפיות
13
תשובות

העלאת קבצים לשרת

,‏ 2 באוגוסט, 2006

זה הקקישור מתוך האתר שלכם
https://www.webmaster.org.il/article.asp?id=6


האפליקציה לא עובדת

מציג לי את השיאה הזאת

           error 'ASP 0175 : 80004005'

למה??

תגיות:

13 תשובות

  1. JUBRANO הגיב:

    שאלה למנהלי הפורם בתקווה שיענו
    יש לי בעיה עם העלאת קבצים השרת, והשתמשי במאמר שיש לכם באתר עם אוביקט ה ASPUpload, אבל למזלי הרע לא עבד והוא  מציג הודעת שגיאה הזאת:

    Microsoft VBScript compilation error '800a0401'

    Expected end of statement

    /UploadScript1.asp, line 6

    Count = Upload.Save "c:filesdata"

  2. זהר פלד הגיב:

    מה הקוד שלך?
    תפסת אותי ביום לא הכי סבלני, ואני ממש לא אוהב לשאול את אותה שאלה פעמיים.
    קרא שוב את הקישור שנתתי לך קודם, ותיישם את הדרישות שמוצגות שם – באופן ספציפי – מה הקוד הרלוונטי, מה הודעת השגיאה במלואה, ולמען השם – תיישר את הקוד לשמאל. (ישור לשמאל מתבצע ע"י לחיצה על האייקון השמאלי ביותר בשורה השניה של האייקונים במסך הוספת ההודעה. כדי לישר לימין חזרה, צריך ללחוץ עליו שוב).

  3. JUBRANO הגיב:

    הקוד…
    הקוד

    <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"

  4. JUBRANO הגיב:

    ישרתי את הקוד לשמאל אבל
    לא עבד הישור

  5. aviadfe הגיב:

    הבעיה פשוטה
    קודם כל, הנה קישור לאתר של חברת persits, למדריך שלהם:
    http://www.aspupload.com/manual_simple.html

    דבר שני, רצוי מאוד לפני שנכנסים לפאניקה ומחליטים שלא יודעים, לקרוא את השגיאה שASP נותנת. היא בד"כ מאוד ברורה. והנה שים לב.

    השגיאה גם אומרת לך שהיא בשורה 6 (אם כי בשפות סקריפט, לא תמיד מספר השורה שהוא נתקע בה היא באמת שורת השגיאה), ואומרת לך אפילו באיזה משפט.

    אז צריך פשוט להכנס למאגר מידע של חברת פרסיטס ולראות את המשפט המדובר.

    בכל אופן חסרות לך סוגריים:


    Upload.Save("c:filesdata")

  6. JUBRANO הגיב:

    הקוד עבד עם ה Upload.SaveVirtual
    אבל , איך אוכל למחוק אותו מהתקיה?

  7. aviadfe הגיב:

    ובכן, כמה דברים
    1. אני לא חושב שהתוכנת העלאת קבצים הזאת משמשת גם למחיקה. למחיקה, ראה ריפרנס של עבודה עם קבצים עם האובייקט המובנה של ASP.
    כאן יש לך הסבר: http://www.sigall.co.il/asp/asp13.asp

    לשם ספריה וירטואלית, אתה יכול להשתמש ב- mappath.

    2. ניסית לשמור SAVE רגיל, עם סוגריים ולא הצליח? כי למיטב זכרוני ASPUPLOAD מחייבת סוגריים.

    אם הצלחת רק בשמירה בספריה וירטואלית, משמע ששם הספריה הזה שניסית, לא קיים פיזית אלא רק מוגדר וירטואלית בIIS.

  8. JUBRANO הגיב:

    התקיה קיימת אני רואה אותו בשרת
    אני רואה אותה ב FTP, אבל רק ב Upload.SaveVirtual עבד.

    ניסית גם עם סוגרים ובלי סוגרים ולא עבד רק ב שמירת וירטואלית?

    שאלה 1
    איך עושים את שמירה עם ה mappath?

    שאלה 2
    האם  אוביקט ה FSO רק דרכו מוחקים מהתקיה קבצים או יש דרך אחרת?

    שאלה 3
    הדרך המקצועית להעלאת קבצים ומחיקתם היא בשמירת הקבצים רק קובך הנתונים ולא בשרת?

    או שחייביים לשמור גם ההסית נתונים ובשרת?

    תודה

  9. זהר פלד הגיב:

    אז ככה:
    1. saveVirtual בעצם מבצעת את אותה הפעולה שמבצעת save בשילוב עם mapPath – היא שומרת את הקובץ לנתיב ויראטואלי שהיא מקבלת (מבחינתך, בקוד asp, נתיב וירטואלי הוא נתיב יחסי לנתיב שבו נמצא קובץ ה asp עצמו).
    המתודה Server.MapPath מקבלת נתיב יחסי כזה ומחזירה את הנתיב האבסולוטי שאליו הוא מצביע – שזה בדיוק מה שמצפה לקבל המתודה save – נתיב אבסולוטי.

    2. ניתן לבצע מחיקה גם ע"י האובייקט aspupload. לפרטים קרא כאן.

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

  10. JUBRANO הגיב:

    אפשר לקבל דוגמא
    איך עושים זאת עם ה MAPPATH בקוד אפשר לראות?

    אז למה לא עבד לי ה SAVE , התקיה של הקבצים אני רואה אותה בשרת ,
    מה הכוונה שהתקיה  "לא קיים פיזית אלא רק מוגדר וירטואלית בIIS"?

    תודה

  11. זהר פלד הגיב:

    תיקיה וירטואלית מול תיקיה פיזית.
    תיקיה פיזית היא תיקיה שנמצאת ממש על המחשב, וניתן לגשת אליה דרך 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

שלח תשובה