שלח תשובה

זירת השאלות

585
צפיות
17
תשובות

הורדת קובץ עם שם עברי ב-ASP

,‏ 14 ביוני, 2004

שלום כולם

אני מנסה להוריד ע"י
STREAMING
קובץ וורד וכדומה שיש לו שם עברי, למשתמש.
בד"כ, זה עובד מצויין עם קבצים עם שמות באנגלית, זה מעלה חלונית שמירה והכל – ממש מעולה, אבל עם שמות בעברית הוא מוציא הודעה כאילו הקובץ לא קיים.

יש למישהו רעיון איך אפשר לעשות את זה? אפילו ניסיתי ברגע האחרון לפני שליחת הקובץ, לשנות את שמו, או להשתמש ב – SERVER.HTMLENCODE או URLENCODE, אך ללא תוצאות…

אשמח לשמוע מכם
🙂

נב: הקוד מצ"ב

תגיות:

17 תשובות

  1. BuildHome הגיב:

    ידוע שלא משתמשים עם עברית בשמות
    קבצים באנטרנט.
    כיצד ניסית לשנות את שם הקובץ ? תראה קוד ותגיד מה לא הלך לך.

  2. kneidels הגיב:

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

  3. BuildHome הגיב:

    צרף את הקוד הרלוונטי לשינוי שם
    קובץ.
    גם מומלץ לשנות את שם הקבצים שמועלים לשרת לשמות מספרים.

  4. kneidels הגיב:

    הכל שם, חפש את
    Response.AddHeader "Content-Disposition", "attachment;filename=""" & server.URLEncode(x_file_ID)

    כאן אני משנה את השם למספר הזיהוי של הרוקורד, במקום שם הקובץ המקורי.

    אני מסכים איתך לגבי מספור אוטומטי….

  5. BuildHome הגיב:

    שינוי שם הקובץ יכול להתבצע בעזרת
    FSO בלבד.
    אני לא אחפש את הקוד בתוך קוד שלם..קרא תקנון פורום.

  6. kneidels הגיב:

    טעות – אפשר לשנות את השם תוך כדי
    הסטימינג

  7. BuildHome הגיב:

    בקוד שהצגת אין פעולת שינוי שם לקובץ

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

  9. kneidels הגיב:

    השאלה היא איך לחסום עברית בלבד

  10. BuildHome הגיב:

    אתה יכול לשים משתנה
    עם כל האותיות בעברית ואז לפצל אותו למערך חד מימדי.
    לאחר מכן תעשה לולאת FOR שבודקת אם כל אות קיימת בשם וצוברת את מספר האותיות..אם זה גדול מאפס אז זה כנראה שם עברי..אחרת, אנגלית.

    לדעתי שיטה חמודה שכרגע המצאתי..

  11. kneidels הגיב:

    נשמע מעניין!
    אבל איך אתה יכול לבדוק אם זה אות בעברית או אנג?

  12. ניר טייב הגיב:

    ולמה לא להשתמש ב-regExp?
    שימוש ב-regExp יקל כאן כל הכל

    var rExp = /[א-ת]/gi
    if (rExp.test("ניר אמר שלום"))
    alert("שימוש באותיות בעברית אינו חוקי");

    זה יכול לעבוד גם בשרת רק צריך להשתמש במשהו אחר מ-ALERT

  13. BuildHome הגיב:

    הנה קוד קטן
    קוד קטן ופשוט..

    CountLetters = 0
    strWord = "שם קובץ"
    strLetters = "א,ב,ג,ד,ה,ו,ז,ח,ט,י,כ,ל,מ,נ,ס,ע,פ,צ,ק,ר,ש,ת"
    strLetters = Split(strLetters,",")
    For l = 0 To UBound(strLetters)
      If InStr(strWord,strLetters(l)) > 0 Then CountLetters = CountLetters+1
    Next

    If CountLetters > 0 Then
       הקובץ בעברית…צריך לבצע שינוי שם
    Else
       הקובץ באנגלית…הכל תקין
    End If

    זה קוד ממש פשוט שעכשיו כתבתי אז אולי יש טעויות…אבל ככה זה אמור להיות.

  14. kneidels הגיב:

    גם נראה טוב.. אני צריך לבדוק מה זהD

  15. ניר טייב הגיב:

    הקוד הזה לא יהיה יעיל במקרה של JS
    במקרה של VBS אני לא יודע
    אבל ב-JS יהיה עדיף להשתמש ב-regExp כדי לקבל שיפור ביצועים והתקדמות ברמת הקוד (וגם יותר קל)

שלח תשובה