העברת קבצים ב Flash זה עניין מסובך שמצריך הכנות ובדיקות, התהליך מורכב מ 3 שלבים , השלב הראשון הוא ההגדרות של המערכת: IIS,הרשאות כתיבה בספריות ופתיחת פורטים השלב הבא הוא פיתוח האתר שאיתו ה Flex הולך לדבר, ושלב אחרון הוא פיתוח מנגנון העלאה ב Flex.
הגדרות מערכת
תחילה יש להגדיר את גודל המידע שיכול לעבור ואח"כ את גודל כל דרישה בשביל אותו מידע , ב IIS7 גודל המידע ה Default הוא 30 מגה ,אבל ניתן לדרוס את הפרמטר הזה בקובץ ApplicationHost שהוא בעצם קובץ XML שמכיל את הפרמטרים של ה IIS, בזמן טעינת האתר ה IIS טוען את הקובץ ולאחר מכן הוא טוען את ה Web.Config שמכילים את הפרמטרים של האתר העצמו.
ApplicationHost.config
תחילה נערוך את קובץ
maxRequestLength=2097151 הגדרנו את גודל של בקשה, בעצם 2 מגה.
הגדרות מערכת
תחילה יש להגדיר את גודל המידע שיכול לעבור ואח"כ את גודל כל דרישה בשביל אותו מידע , ב IIS7 גודל המידע ה Default הוא 30 מגה ,אבל ניתן לדרוס את הפרמטר הזה בקובץ ApplicationHost שהוא בעצם קובץ XML שמכיל את הפרמטרים של ה IIS, בזמן טעינת האתר ה IIS טוען את הקובץ ולאחר מכן הוא טוען את ה Web.Config שמכילים את הפרמטרים של האתר העצמו.
ApplicationHost.config
תחילה נערוך את קובץ
C:\Windows\System32\inetsrv\config\applicationHost.config
נחפש את הבלוק שמגדיר את האתר שלנו ב ApplicationHost (חשוב מאוד לגבות את הקובץ!) :
<location path="Your Website Name">
<system.webserver>
<security>
<requestfiltering>
<requestlimits maxallowedcontentlength="104857600">
</requestfiltering>
</security>
</system.webserver>
</location>
ברוב המצבים תגית האתר כבר מוגדרת ויש לוודא שקיימת גם תגית ה Security ואם לא להוסיף אותה.
ניתן לעשות את התהליך גם ב AppCmd שהיא אפליקצית Console שמגיע עם ה IIS 7 וניתן בעזרת לערוך את קובץ ה ApplicationHost ללא צורך לפתוח אותו , ובעצם למנוע תקלות בעקבות כתיבה לא נכונה.
C:\Windows\System32\inetsrv>appcmd set config "Your Website Name" -section:requestFiltering -requestLimits.maxAllowedContentLength:104857600 -commitpath:apphost
maxAllowedContentLength:104857600 מגדיר גודל של המידע שניתן להעביר, במקרה שלנו הגדלנו אותו ל 100 MB.
Web.config
נוסיף את הבלוק הבא בתוך התגית <system.web>(חשוב מאוד לגבות את הקובץ!) :
<httpRuntime executionTimeout="90" maxRequestLength="4096" />
Asp.net
האתר שלנו הוא מבוסס על Asp.net , המבנה שלו מאוד פשוט יש לנו ספרייה שמאחסנת לנו את הקבצים שנעלה לשרת, חשוב מאוד לתת לה הרשאות על מנת שנוכל לכתוב לספרייה, לצורך הדוגמה ניתן גישה ל Everyone.
יש לנו 2 קבצי Asp.net באתר ,הראשון הוא ה Upload Handler שתוכנת ה Flex שלנו מתחברת על מנת לשלוח את הקובץ לשרת, ודף נוסף שמציג לנו את ה Uploader עצמו.
upload_handler.aspx.cs
פונקציה אחת שבעצם שומרת לנו את הקבצים שאנו שולחים לספריית האחסון.
protected void Page_Load(object sender, EventArgs e)
{
string fileName = System.IO.Path.GetFileName(Request.Files[i].FileName);
Request.Files[i].SaveAs(Server.MapPath("~/UploadedFiles/") + fileName);
}
upload_manager.aspx
דף שמכיל לנו את אובייקט ה Flesh שמעלה קבצים.
חשוב מאוד להגדיר Cross Domain Policy , שנוכל להעלות מכל שרת, או מרשתות שמורשות לכך.
Flex
אפליקצית ה Flex מורכבת ממספר פונקציות:
פונקצית Start
זאת הפוקציה שמתחילה את התוכנה ומוסיפה מאיזינים (listeners) עבור אירועים בכפתורים.
פונקצית eventRespnse
פותחת לנו את ה File Dialog שנוכל לבחור קבצים.
פונקצית selectResponse
מחזירה לנו את כל הקבצים שנבחרו להעלאה.
פונקצית UploadFiles
הפונקציה ששולחת את הקובץ לשרת, תחילה היא קוראת לקובץ upload_handler ואח"כ מתחילה בשליחת הקובץ.
פונקצית uploadComplete
כשהעלאת הקובץ מסתיימת, עולה לנו אירוע שאומר שאפשר לשלוח את הקובץ הבא.
Gui
הממשק מורכב מ - Button,Labels,Progress Bar
סרטון הדגמה:
אין תגובות:
הוסף רשומת תגובה