سؤال

أريد ببساطة كتابة محتويات عنصر تحكم TextBox إلى ملف في جذر دليل خادم الويب ... كيف يمكنني تحديد ذلك؟

ضع في اعتبارك في الاعتبار، أختبر هذا محليا ... إنه يحتفظ في كتابة الملف إلى دليل ملفات البرنامج Visual Studio Common IDE بدلا من دليل المشروع الخاص بي (وهو المكان الذي افترض فيه الجذر هو عندما ينطلق خادم الويب) وبعد

هل لديك مشكلتي علاقة بفضل تحديد الموقع الصحيح في Web.config؟ حاولت ذلك ولا يزال لا تذهب ...

شكرا جزيلا...

اختبار الفراغ المحمي Submit_ServerClick (كائن المرسل، EventArgs E) {Streamwriter _testdata = Streamweriter الجديد ("Data.txt"، صحيح)؛ _testdata.writeline (textbox1.text)؛ / / اكتب الملف. _testatata.close ()؛ / / أغلق مثيل StreamWriter. _testdata.dispose ()؛ / / التخلص من الذاكرة. }
هل كانت مفيدة؟

المحلول

protected void TestSubmit_ServerClick(object sender, EventArgs e)
{
  using (StreamWriter _testData = new StreamWriter(Server.MapPath("~/data.txt"), true))
 {
  _testData.WriteLine(TextBox1.Text); // Write the file.
 }         
}

Server.Mappath يأخذ مسارا افتراضيا وإرجاع واحد مطلق. يستخدم "~" للحل على جذر التطبيق.

نصائح أخرى

هناك طرق مثل WriteAllText في ال File فئة للعمليات المشتركة على الملفات.

استخدم ال MapPath طريقة للحصول على المسار الفعلي لملف في تطبيق الويب الخاص بك.

File.WriteAllText(Server.MapPath("~/data.txt"), TextBox1.Text);
protected void TestSubmit_ServerClick(object sender, EventArgs e)
{
    using (StreamWriter w = new StreamWriter(Server.MapPath("~/data.txt"), true))
    {
        w.WriteLine(TextBox1.Text); // Write the text
    }
}

ضع في اعتبارك أنك ستحتاج أيضا إلى منح الوصول إلى حساب IUSR للمجلد بمجرد التحميل إلى خادم الويب الخاص بك.

أنا شخصيا أوصي بعدم السماح بالكتابة الوصول إلى مجلد الجذر إلا إذا كان لديك سبب وجيه للقيام بذلك. وبعد ذلك، يجب أن تكون حذرا من نوع الملفات التي تسمح بحفظها حتى لا تسمح بشخص ما بكتابة صفحات ASPX الخاصة بها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top