מדריך CSHTML – עבודה עם קבצים: יצירת קובץ טקסט וכתיבת נתונים לתוכו
אם נרצה לאחסן את הנתונים בקובץ טקסט, נשתמש בפונקציה File.WriteAllText כדי ליצור את הקובץ ולכתוב את הנתונים לתוכו. הדוגמא הבאה יוצרת דף המכיל טופס פשוט עם שלושה פקדים (שם פרטי, שם משפחה, וכתובת דואר אלקטרוני) וכן כפתור שליחה. כאשר המשתמש לוחץ על כפתור ה- Submit, נאחסן את הקלט שלו בקובץ טקסט.
- צור תיקייה חדשה בשם App_Data, במידה והיא אינה כבר קיימת.
- בתיקיית השורש של האתר, צור קובץ CSHTML חדש בשם UserData.cshtml
- החלף את קוד ה-HTML הקיים בקוד הבא:
@{
var result = "";
if (IsPost)
{
var firstName = Request["FirstName"];
var lastName = Request["LastName"];
var email = Request["Email"];
var userData = firstName + "," + lastName +
"," + email + Environment.NewLine;
var dataFile = Server.MapPath("/App_Data/data.txt");
File.WriteAllText(@dataFile, userData);
result = "Information saved.";
}
}
<!DOCTYPE html>
<html>
<head>
<title>Write Data to a File</title>
</head>
<body>
<form id="form1" method="post">
<div>
<table>
<tr>
<td>
First Name:
</td>
<td>
<input id="FirstName" name="FirstName" type="text" />
</td>
</tr>
<tr>
<td>
Last Name:
</td>
<td>
<input id="LastName" name="LastName" type="text" />
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<input id="Email" name="Email" type="text" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</div>
<div>
@if (result != "")
{
<p>
Result: @result
</p>
}
</div>
</form>
</body>
</html>חלק ה- HTML של הדף מכיל טופס עם שלוש תיבות טקסט לקליטת נתונים מהמשתמש כפי שראינו בפרק קודם.
בחלק הקוד, נשתמש במאפיין IsPost כדי לקבוע אם הדף נשלח כתוצאה מלחיצה על כפתור ה- Submit לפני תחילת הטיפול. המשימה הראשונה היא להביא את הקלט מהמשתמש ולשמור אותו בתוך משתנים. בשלב הבא ערכי המשתנים משורשרים למשתנה אחר ולמחרוזת אחת ומופרדים בפסיקים. שימו לב כי הפסיק עצמו הוא מחרוזת, לכן נכלול אותו במרכאות מאחר ואנחנו ממש מוסיפים פסיק "," למחרוזת הגדולה שאנחנו מייצרים. בסוף הנתונים מוסיפים Environment.NewLine, המציין תו לשורה חדשה, כדי שפרטי המשתמש הבא יתחילו בשורה חדשה בקובץ.
בסוף השרשור המחרוזת נראית כך:
David,Jones,[email protected]
(כשישנה ירידת שורה חבויה בסוף המחרוזת)
בשלב הבא, ניצור משתנה המכיל את מיקומו ואת שמו של הקובץ כדי לאחסן את הנתונים. קביעת המיקום דורשת טיפול מיוחד: באתרי אינטרנט, לא נתייחס בקוד לנתיבים מוחלטים כמו C: \ Folder \ File.txt עבור שמירת קבצים בשרת האינטרנט. בייחוד אם אתר אינטרנט הוא "נייד", כלומר נע בין שרתים. יתר על כן, עבור אתר מתארח בשירות הוסטינג (hosting), בניגוד למחשב שלך, אנחנו בדרך כלל אפילו לא יודעים מה הנתיב הפיזי עליו מותקן האתר.
אבל לפעמים (כמו עכשיו, כתיבת קובץ) נאלץ לספק נתיב מלא. הפתרון הוא להשתמש בפונקציה Server.MapPath. בזמן ריצה, הוא מחזיר את הנתיב המלא לאתר שלנו. כדי לקבל את הנתיב של שורש האתר, נעביר "~" ל- MapPath. (ניתן גם להעביר שם של תיקיית משנה, כמו ~ / App_Data /, כדי לקבל את הנתיב אליה) לאחר מכן נוכל לשרשר פרטים נוספים בנוסף למה שנקבל בחזרה מ- MapPath בכדי ליצור את הנתיב המלא. בדוגמה זו נוסיף שם הקובץ.
הקובץ נשמר בתיקיה App_Data. תיקיה זו היא תיקיה מיוחדת ב- CSHTML וב- ASP.NET המשמשת לאחסון קבצי נתונים.
הפונקציה File.WriteAllText כותבת את הנתונים לקובץ. פונקציה זו לוקחת שני פרמטרים, את השם (עם הנתיב) של הקובץ לכתיבה ואת הנתונים שיש בפועל לכתוב עליו. שימו לב כי שם הפרמטר הראשון מתחיל ב- @. זה אומר ל- ASP.NET שאנחנו אמורים לספק אליו מחרוזת, מלל, ושלא יפרש תווים כמו "/" בדרכים אחרות.
- הצג את הדף בדפדפן.
- הזן ערכים בתוך שדות הטופס ולחץ עם כפתור ה- Submit
- סגור את הדפדפן.
- חזור אל WebMatrix ובעץ הקבצים של האתר, רענן את התצוגה והצג את הקבצים בתיקייה App_Data.
- פתח את הקובץ Data.txt. המידע ששלחנו נמצא כרגע בתוך הקובץ.
- סגור את הקובץ Data.txt
תגובות בפייסבוק