码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET总结——上传文件

时间:2014-09-10 17:55:40      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:postedfile.filename   c#转义字符   

       在利用Html中的File控件上传文件时,如何获得你上传的文件的路径?北大青鸟的视频中告诉我们用:

       File1.PostedFile.FileName

       可是在断点调试中,我就发现了问题。

       在火狐浏览器和IETester中,都只显示文件名,而不显示文件的完整路径,获得的FileName也只是文件名。比如我选择的图片的完整路径是"E:\提高班课程实践篇(我)\images\niunanlogo.jpg",但是浏览器中显示的是“niunanlogo.jpg” ,而且调试中显示的FileName也是“niunanlogo.jpg”,虽说这样挺方便的,不用我们再像视频中说的那样,去专门截取这部分字符串(因为视频中显示的是完整路径,需要截取出文件名。)但是,这是为什么呢?如果我们哪天需要完整的文件路径怎么办?哈哈,这些问题,早就有人解决过了,这里我就借鉴一下:

       对于IE或IETester,我们找到:选项-Internet属性-安全-自定义级别,如图所示:

       

                                     bubuko.com,布布扣


       将“文件上载到服务器时包含本地目录路径”一项设成启动,如图:

       

                                     bubuko.com,布布扣

        

       这样就能显示出完整路径了。

       对于FireFox也有解决办法,有兴趣的可以自己查一查啊bubuko.com,布布扣

       解决了上述问题,又产生了新的疑惑,这个时候断点调试发现我的程序(VS2010 C#)中的FileName显示为:

       "E:\\提高班课程实践篇(我)\\images\\niunanlogo.jpg"

       而视频中显示的为:

       @"E:\提高班课程实践篇(我)\images\niunanlogo.jpg"

       这又是怎么回事儿哩?

       我们先不着急解答上述问题,先跟我一起想象一下下面的情景:

       如果你想在Label中显示一句话,如下:
      

       与"take"相关的英语短语很多


       你在程序中怎么实现呢?
       如果在程序中你直接写:
       Label1.Text = "与"take"相关的英语短语很多";

       这样是不行的。
       因为一般情况下:
       ""是用来表示它括起来的内容是字符串的。
       可是我们现在只想让它表示一个双引号怎么办?
       这时候就需要转义字符了,大家一定不陌生,一个“\”功能无比强大,它能“强迫”别的字符做出改变。
       然后我们可以这样写:

       Label1.Text = "与\"take\"相关的英语短语很多";
       然后一点问题都没有哦!

       现在,假入我们想让Label中显示:
       E:\提高班课程实践篇(我)\images\niunanlogo.jpg
       那么我们怎么写呢?
       如果我们在程序中写成:
       Label1.Text= "E:\提高班课程实践篇(我)\images\niunanlogo.jpg";
       会提示错误:“无法识别的转义序列”
       也就是说默认情况下,\ 表示转义字符,但是我们想让它仅表示一个反斜杠,那么我们就这样写:
       Label1.Text= "E:\\提高班课程实践篇(我)\\images\\niunanlogo.jpg";
       之后,我们就找出规律,如果我们想改变某个字符的原本意义,就用转义字符(\)+你要改变意义的字符就OK了。如果我们相用n表示换行,那么就写成\n。
       大家也看到了,如果在一个路径字符串中,有多个\,那么我就得额外多写同样个数的\,有没有简便的办法呢?
       当然有了,写成如下形式:
       Label1.Text = @"E:\提高班课程实践篇(我)\images\niunanlogo.jpg";
       我们知道在默认情况下,\是被看做转义字符的,但是在前面加上@之后,它后面的字符串中的\就会被都当做反斜杠处理,不把它看做转义字符了。
       所以,现在我们来看看为什么视频中和我的VS2010显示的不一样呢?其实它们是一回事,只是是两种写法,目的都是让\表示为反斜杠。所以它们两个是等价的。

       总结:

       这篇文章主要是通过我在实践当中遇到的问题,讲了讲如何用Html的File控件显示完整文件路径以及转义字符的基本知识,内容很简单,但是解决问题的过程很精彩!

ASP.NET总结——上传文件

标签:postedfile.filename   c#转义字符   

原文地址:http://blog.csdn.net/u010924834/article/details/39181765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!