كيف يمكنني الحصول على تحميل ملف المسار الكامل في C # 3.0؟

StackOverflow https://stackoverflow.com/questions/1020789

سؤال

في بلدي ASP.NET MVC الموقع، لا بد لي من قراءة ملف txt مع بعض الأسماء ورسائل البريد الإلكتروني التي كتبها separeted '؛'. بعد ذلك، لا بد لي من حفظ كل سطر من هذا ملف txt إلى قاعدة البيانات.

وغوغلينغ حولها، ولقد وجدت بعض قصاصات، ولكن في كل منها لا بد لي من استخدام مسار ملف txt.

ولكن، كيف يمكنني الحصول على هذا الطريق؟ يمكن أن يكون هذا الملف في أي مكان في جهاز المستخدم!

والشكر !!

هل كانت مفيدة؟

المحلول

ولا يمكنك الحصول على المسار الكامل للملف مرفوع. وهذا من شأنه أن يشكل انتهاكا الخصوصية للمستخدم الذي تحميل الملف.

وبدلا من ذلك، سوف تحتاج إلى قراءة Request.Files التي تم تحميلها. على سبيل المثال:

HttpPostedFile file = Request.Files[0];
using (StreamReader reader = new StreamReader(file.InputStream))
{
    while ((string line = reader.ReadLine()) != null) 
    {
        string[] addresses = line.Split(';');
        // Do stuff with the addresses
    }
}

نصائح أخرى

إذا كنت على asp.net نموذج صفحة ويب ثم Server.MapPath("~/") تعمل على الحصول على جذر الموقع حتى تمرير مسار التي تحتاج إليها. قد تحتاج إلى الاتصال ب

HttpContext.Current.Server.MapPath("~/");

وعلى سبيل المثال مجلد حيث يتم حفظ ملفات نصية:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");

لمجرد قراءة من مرة واحدة لديك يمكنك StreamReader ما يلي:

string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");
string path = directoryOfTexts + "myfile.txt";
string alltextinfile = "";
if (File.Exists(path)) 
{
    using (StreamReader sr = new StreamReader(path)) 
    {
       //This allows you to do one Read operation.
       alltextinfile = sr.ReadToEnd());
    }
}

وإذا كان هذا هو لتطبيق سطح المكتب ثم الطبقة Applcation لديه كل هذه المعلومات:

http://msdn.microsoft كوم / EN-US / مكتبة / system.windows.forms.application.startuppath.aspx

Application.StartupPath

وتسرد جميع الخصائص الأخرى المجلدات APPDATA والاشياء ولكن مرة واحدة لديك مسار التطبيق لتنفيذ هذا يعطيك السياق مثل Application.LocalUserAppDataPath.

http://msdn.microsoft.com /en-us/library/system.windows.forms.application_properties.aspx

إذا كان المحتوى هو صغيرة بما يكفي يمكنك أيضا أن مجرد حفظها في HashTable أو List<String> عام قبل الحفظ إلى قاعدة البيانات كذلك.

var hpf = Request.Files[file] as HttpPostedFile; 

ويجب أن يكون النموذج في HTML enctype="mulitipart/form-data"

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