asp.net3.5关于FileUpload控件的一个注意点的思考

简介:
 最近在一个asp.net 3.5项目中需要用到FileUpload控件读取文本文件中的内容。我们正常的思路就是通过FileUpload控件选取文件,后台读取FileUpload控件显示的绝对路径,最后文件类操作绝对路径下的文件。但是在选择文本文件的时候,意外发现取不到文件的完整路径,只能取到文件名(ie8和firefox3.0都一样)。印象中asp.net2.0里要取文件完整路径,只要UpLoadFile.PostedFile.FileName就可以了,但是现在为什么会只取到文件名呢?我大胆猜测可能是asp.net3.5下的一个bug。然后google一下,终于找到一篇比较靠谱的文章,也就是 这篇。然后我满怀信心地按照它给出的解决方法即Path.GetFileName(UpLoadFile.PostedFile.FileName)这样的方法跟踪调试了一下,我靠,文件路径竟然还是错的。为什么是错的呢?我选择桌面的一个文本文件,然后后台取的竟然将vs2008的d盘下的安装文件Common7文件夹下面的一段路径给取出来了(你可以亲自试试看)。无语了,又google一阵无果后,得,换成html上传控件,麻利地写了几行JavaScript代码,问题这次总算可以完美解决了吧,一调试,真是不敢相信啊,嗯...又发现一个新问题(可以查看 这一篇文章,“fakepath”替代了具体某个盘符下的文件夹路径)。通过这两篇文章,我们发现它们都是一致性的建立在浏览器的分析基础之上,这本来无可厚非,而且按照第二篇文章的方法,设置好浏览器的安全选项后,问题确实解决了。但是我们还不满足,如果普通用户不知道浏览器的设置怎么办,或者知道需要设置浏览器安全性但是因为其他外在因素考虑放弃设置怎么办?难道要加说明,让每个用户在上传文件的时候都必须来修改自己的浏览器的设置?显然不可取。其实我们还有一种变通的方式(针对服务器控件而言),很简单,只要使用上传控件的FileBytes属性,如下:
  byte [] data  =   this .fuControl.FileBytes;  // fuControl 上传控件
接着将二进制数组转换成我们需要的字符串就行了
string  txtContent  =  System.Text.Encoding.GetEncoding( " GB2312 " ).GetString(data,  0 , data.Length);  // 二进制数组转化为字符串 
ps:这个转换笔者只试过文本文件从二进制转为字符串,其他类型的文件没有试过。如果你要读取其他类型的文件内容,但是二进制文件无法直接转换为您需要的形式,请慎重使用本文的方法。






本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/10/12/1516475.html,如需转载请自行联系原作者
目录
相关文章
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
135 8
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
12月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
462 0
|
12月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
216 0
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
240 0
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
151 0
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
386 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
200 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
221 0

热门文章

最新文章