سؤال

عندما أقوم بتحميل ملف إلى موقع باستخدام ASP: عنصر تحكم في ملف خاصية اسم الملف يختلف في IE و Firefox. في فايرفوكس، يوفر فقط اسم الملف، ولكن IE يوفر المسار الكامل للملف.

لقد عملت حول هذا بإضافة الرمز:

Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
    FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If

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

شكرا.

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

المحلول

هذا مصدر قلق للأمن / الخصوصية، فايرفوكس / موزيلا يفعل ذلك بشكل صحيح ولن تحصل على وسيلة للحصول على المسار الكامل دون الوظيفة الإضافية أو التطبيق الصغير أو silverlight أو فلاش أو بعض الآلية الأخرى.

هنا هو مزيد من المعلومات حول موقف موزيلا:

https:/developer.mozilla.org/en/updating_web_applications_for_firefox_3.

انظر القسم تغييرات الأمن -> حقول تحميل الملفات

آمل أن يحمل IE بدلة لذلك لدينا بيئة ثابتة وآمنة.

نصائح أخرى

حل بسيط لهذا اختباره في IE والكروم

new FileInfo(myHttpPostedFileBase.FileName).Name

سيضمن ذلك دائما الحصول على اسم الملف فقط حتى إذا تم تضمين المسار.

في IE8، تغير هذا السلوك وسوف تمر فقط باسم الملف، وليس المسار الكامل. ؛-)

التفاصيل والرابط إلى آخر بلوق مناقشة التغيير في IE8:http://blogs.msdn.com/b/webtopics/archive/2009/07/27/UPloading-a-File-using-fileupload-Control-fails-in-ie8.aspx.

يجب أن تحقق تطبيقات ServerSide التي تتطلع إلى تحليل اسم الملف، ولكن ليس توقع هناك أن تكون بخط دعم الظهر في اسم الملف.

تجاوز إعداد المستخدم IE8:http:/blogs.msdn.com/blogfiles/webtopics/windowslivewriter/uploadingafileusingfileuploadtrolfail_167/clip_image002_2.jpg.

يمكنك أيضا استخدام Path.getFilename (file.filename) الذي إرجاع اسم الملف فقط. مثال:

Dim File As HttpPostedFile = context.Request.Files("txtFile")
' let's FileName is "d:\temp\1.txt"
Dim FileName As String = Path.GetFileName(File.FileName)
' FileName will be "1.txt"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top