614
צפיות
צפיות
17
תשובות
תשובות
הורדת קובץ עם שם עברי ב-ASP
שלום כולם
אני מנסה להוריד ע"י
STREAMING
קובץ וורד וכדומה שיש לו שם עברי, למשתמש.
בד"כ, זה עובד מצויין עם קבצים עם שמות באנגלית, זה מעלה חלונית שמירה והכל – ממש מעולה, אבל עם שמות בעברית הוא מוציא הודעה כאילו הקובץ לא קיים.
יש למישהו רעיון איך אפשר לעשות את זה? אפילו ניסיתי ברגע האחרון לפני שליחת הקובץ, לשנות את שמו, או להשתמש ב – SERVER.HTMLENCODE או URLENCODE, אך ללא תוצאות…
אשמח לשמוע מכם
🙂
נב: הקוד מצ"ב
17 תשובות
ידוע שלא משתמשים עם עברית בשמות
קבצים באנטרנט.
כיצד ניסית לשנות את שם הקובץ ? תראה קוד ותגיד מה לא הלך לך.
הקוד מצ
אופס – הקוד מצ"ב בהודעה הראשונה ו..
מדובר במערכת שאנשים מעלים לשרת את הקבצים – כך שאי אפשר לדעת באיזנ שפה הקובץ שהם מעלים….
אני שולח להם את הקובץ ע"י סטרימינג, אך בלי קשר – כשאתה מוריד (ידנית) קובץ מקושר ב-HTML שיש לו שם בעברית – אין עם זה שום בעיה.
צרף את הקוד הרלוונטי לשינוי שם
קובץ.
גם מומלץ לשנות את שם הקבצים שמועלים לשרת לשמות מספרים.
הכל שם, חפש את
Response.AddHeader "Content-Disposition", "attachment;filename=""" & server.URLEncode(x_file_ID)
כאן אני משנה את השם למספר הזיהוי של הרוקורד, במקום שם הקובץ המקורי.
אני מסכים איתך לגבי מספור אוטומטי….
שינוי שם הקובץ יכול להתבצע בעזרת
FSO בלבד.
אני לא אחפש את הקוד בתוך קוד שלם..קרא תקנון פורום.
טעות – אפשר לשנות את השם תוך כדי
הסטימינג
בקוד שהצגת אין פעולת שינוי שם לקובץ
אם בנית מערכת המאפשרת להעלות קבצים
אני ממליץ לחסוך את כאב הראש הזה ולחסום את האפשרות להעלאת קבצים עם שמות עבריים.
לפי דעתי שמות קבצים עבריים זה עניין מסובך, ואני ממליץ לא להשתמש בזה באתרי אינטרנט.
אף שפת אינטרנט לא יועדה בשביל לטפל קבצים בשפות זרות כגון עברית.
איפה ראית אתר נורמלי ששמות הקבצים שלו הם בעברית? לא קיים דבר כזה…
השאלה היא איך לחסום עברית בלבד
אתה יכול לשים משתנה
עם כל האותיות בעברית ואז לפצל אותו למערך חד מימדי.
לאחר מכן תעשה לולאת FOR שבודקת אם כל אות קיימת בשם וצוברת את מספר האותיות..אם זה גדול מאפס אז זה כנראה שם עברי..אחרת, אנגלית.
לדעתי שיטה חמודה שכרגע המצאתי..
נשמע מעניין!
אבל איך אתה יכול לבדוק אם זה אות בעברית או אנג?
ולמה לא להשתמש ב-regExp?
שימוש ב-regExp יקל כאן כל הכל
var rExp = /[א-ת]/gi
if (rExp.test("ניר אמר שלום"))
alert("שימוש באותיות בעברית אינו חוקי");
זה יכול לעבוד גם בשרת רק צריך להשתמש במשהו אחר מ-ALERT
הנה קוד קטן
קוד קטן ופשוט..
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
זה קוד ממש פשוט שעכשיו כתבתי אז אולי יש טעויות…אבל ככה זה אמור להיות.
אחלה, אני אבדוק (לת)
גם נראה טוב.. אני צריך לבדוק מה זהD
הקוד הזה לא יהיה יעיל במקרה של JS
במקרה של VBS אני לא יודע
אבל ב-JS יהיה עדיף להשתמש ב-regExp כדי לקבל שיפור ביצועים והתקדמות ברמת הקוד (וגם יותר קל)