سؤال

لدي عنصر تحكم ASP FileUpload وأنا أقوم بتحميله:

C:\Documents and Settings\abpa\Desktop\TTPublisher\apache-tomcat-6.0.26\webapps\ttpub\WEB-INF\classes\org\gtfs\tmp\GTFS_Rail\routes.txt

ما هو رمز C# للاستيلاء على هذه السلسلة بأكملها باستخدام الرمز أدناه:

var pathOfCsvFile = Server.MapPath(ImportRoutes.FileName);
var adapter = new GenericParsing.GenericParserAdapter(pathOfCsvFile);
DataTable data = adapter.GetDataTable();

أعلم أن server.mappath يحتاج إلى التغيير.

تحديث:

استخدام System.IO.Path.GetFullPath أعطاني الإخراج أدناه:

pathOfCsvFile = "C:\\Program Files\\Common Files\\Microsoft Shared\\DevServer\\10.0\\routes.txt"

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

المحلول

أنت تقوم بخلط سلوك العميل والخادم ، وهو أمر سهل القيام به عند الاختبار محليًا. المشكلة التي تواجهها هي أن ملف fileUploAdControl (وتحميل ملف HTML بشكل عام) مصمم خصيصًا ليس زودك بـ ممتلئ مسار إلى الملف. سيكون ذلك خرقًا للخصوصية. ما هو المصمم لإعطائك هو البيانات الثنائية للملف الذي تم تحميله نفسه. على وجه التحديد ، يجب عليك الاستعلام عن الخصائص الموجودة على FileUploAdControl: FileBytes أو FileContent.

فقط لتوضيح المشكلة ، ماذا سيحدث إذا كان مستخدم المتصفح على جهاز مختلف جسديًا عن خادم الويب (الحالة المعتادة)؟ يا له من جيد من شأن المسار الكامل للملف على جهاز العميل كن لك على الخادم?

نصائح أخرى

سيقوم Server.Mappath بإرجاع المسار الفعلي إلى ملف داخل أو أسفل جذر التطبيق. إذا كان هذا المسار الذي سرده خارج جذر التطبيق ، فلن يعمل server.mappath.

يمكنك تعيين دليل افتراضي إلى مجلد تريد استخدامه للاحتفاظ بتحميل الملفات ، والذي يمكنك بعد ذلك اكتشافه باستخدام server.mappath.

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