DCSIMG
קבלת שם קובץ בעברית מ-Http Handler - Ido Flatow's Blog Veni Vidi Scripsi

Ido Flatow's Blog

Veni Vidi Scripsi

News

Have you heard me speak?
Powered
<style type='text/css' media='screen' id='sm_css'> #smix {overflow: visible;height: auto;border-radius: 10px;max-width: 250px;background-color: #323232;text-align: left;font-size: 12px;line-height: 16px;font-family:'Lucida Sans Unicode','Lucida Grande',Verdana,Arial,Helvetica,sans-serif;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;} #smix a {color: #0056CC;text-decoration: none;} #smix .sm_head {color: #fff; line-height: 1em;font-size: 1.4em;padding: 10px;color: #fff;} #smix .sm_lanyard_wrapper {background-color: #fff;;clear: both;width: 97%;margin: 0 auto;margin-bottom: 0px;} #smix .sm_lanyard_content {padding: 7px;}#smix button.sm_rec, #smix a.sm_rec, #smix input[type=submit].sm_rec { padding: 6px 10px; -webkit-border-radius: 2px 2px;-moz-border-radius: 2px; border-radius: 2px; border: solid 1px rgb(153, 153, 153); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 255, 255)), to(rgb(221, 221, 221))); color: #333; text-decoration: none; cursor: pointer; display: inline-block; text-align: center; text-shadow: 0px 1px 1px rgba(255,255,255,1); line-height: 1; }#smix .sm_rec:hover { background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(248, 248, 248)), to(rgb(221, 221, 221))); }#smix .sm_rec:active { background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(204, 204, 204)), to(rgb(221, 221, 221))); }#smix .sm_rec.medium { padding: 3px 7px; font-size: 13px; }#smix .sm_rec span.icon.thumbs_up {background-position: 0px 36px;vertical-align: text-top;display: inline-block;margin-right: 4px;height: 18px;width: 16px;background-image: url(http://speakermix.com/images/new/thumbsold.png);}#smix .sm_rec:hover span.icon.thumbs_up {background-position: 0px 18px;} #smix .sm_events {padding:2px 0px 4px 0px;} #smix .sm_section {font-size: 10px; border-bottom: 1px solid silver; margin-bottom: 6px;} #smix .sm_subline {font-size:120%;margin-top:4px;font-weight:bold} #smix .powered {text-align: right} #smix .powered img {margin: 7px} </style>
Sela Technology Center

Advertisement

קבלת שם קובץ בעברית מ-Http Handler

לא פעם יצא לי לעבוד עם מערכות asp.net אשר צריכות לאפשר שמירה והצגה של קבצים מצורפים (attachments) – לפעמים מדובר בתמונות נלוות לפריט מידע, לפעמים במסמכים או בכל קובץ אחר.

במקרים בהם עובדים במערכת WEB, לא נהוג שהמערכת תחזיר UNC למיקום הקובץ ברשת, אלא המערכת צריכה להחזיר את הקובץ עצמו, באמצעות URL חד-ערכי שמזהה את הקובץ.

אבל, במרבית המערכות הקובץ לא ישמר על שרת ה-IIS, ככה שניתן לו URL משלו, אלא הקובץ ישב בשרת קבצים של-IIS יש גישה אליו, או אף אולי ב-DB, ויש צורך ליצור HTTP Handler על-מנת לאחזר את הקובץ.

אז מה עושים ? כותבים Handler שמגיע לקובץ/DB וטוען אותו בינארית ל-Response. מי שניסה לעשות זאת נתקל בבעיה הקטנה, שכאשר הקובץ מגיע לדפדפן, ומופיעה הההודעה המוכרת של האם לשמור או לפתוח, שם הקובץ המוצג (וזה שניתן כברירת מחדל לשמירה) הוא שם ה-ASHX עצמו ולא שם הקובץ אותו טענו ל-Response.

טיפ 1 – על-מנת לקבוע את השם שיוצג בדפדפן כשם הקובץ, יש להוסיף את השורה הבאה

context.Response.AddHeader(
    "content-disposition", 
    "attachment; filename=\"" + fileName + "\"");    

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

image

אבל אם ננסה לתת שם בעברית, ההודעה תראה כך (שימו לב לשם הקובץ):

image

טיפ 2 – על-מנת לאפשר הצגה של שמות הקבצים בעברית, יש להפעיל על המשתנה את המתודה UrlPathEncode באופן הבא:

fileName = context.Server.UrlPathEncode(fileName);

ואז השם יופיע טוב:

image

Comments

Avi Pinto said:

תודה, אחלה טיפ

# January 6, 2009 7:24 AM

Shlomo said:

מעולה

# January 6, 2009 1:46 PM

אוהד אסטון said:

כן, טיפ טוב,

תודה!

# January 6, 2009 1:48 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: