ASP.NET总结——上传文件

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

File1.PostedFile.FileName

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

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

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

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

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

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

解决了上述问题,又产生了新的疑惑,这个时候断点调试发现我的程序(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控件显示完整文件路径以及转义字符的基本知识,内容很简单,但是解决问题的过程很精彩!

时间: 2025-01-02 05:09:39

ASP.NET总结——上传文件的相关文章

asp.net 客户端上传文件全路径获取方法

asp.net  获取客户端上传文件全路径方法: eg:F:\test\1.doc 基于浏览器安全问题,浏览器将屏蔽获取客户端文件全路径的方法,只能获取到文件的文件名,如果需要获取全路径则需要另想其他方法 如下提供两种方法: 方法1:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可. 方法2: function getPath() { //获取file 控件对象 var obj =

ASP.NET MVC上传文件

出处:http://www.cnblogs.com/zhouhb/p/3906714.html 最近参考网络资料,学习了ASP.NET MVC如何上传文件.最基本的,没有用jQuery等技术. 1.定义Model public class TestModel    {        [Display(Name = "标题")]        [Required]        public string Title        {            get;           

asp.net FileUpload上传文件夹并检测所有子文件

1.在FileUpload控件添加一个属性 webkitdirectory=""就可以上传文件夹了 <asp:FileUpload ID="FileUpload1" runat="server" webkitdirectory="" /> 2.检测文件夹下所有子文件 string DirectoryName = FileUpload1.PostedFile.FileName; string path = Serve

ASP.NET Uploadify 上传文件过大报错

Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:<httpRuntime maxRequestLength="2097100" executionTimeout="3600"/> 配置即可.可是当我这里修改了之后发现还是错误.就想是不是上传控件本身有限制,看到我的有limitSize:30 已经设置了大小,但

ASP.NET MVC 上传文件

1.首先创建一控制器文件UpFileController.cs: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc; namespace Mvc4Study.Controllers{ public class UpFileController : Controller { // // GET: /UpFile/ public ActionRes

ASP.net 判断上传文件类型的三种方法

一. 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Boolean fileOk = false;           string path = Server.MapPath("~/images

asp.net uploadfile 上传文件,连接已重置问题

修改web.config中的配置 <httpRuntime maxRequestLength="102400" executionTimeout="6000"/> //设置上传文件大小(kb)和响应时间(s) 针对iis7或更高版本另需要在<configuration>标签下添加 <system.webServer> <security> <requestFiltering> <requestLimi

ASP.Net 5 上传文件通过虚拟路径存储

先贴上代码 [HttpPost] public IActionResult ImportTeaching(IFormFile file) { string root = @"Temp/teachingfile/"; string phyPayh = evn.MapPath(root); if (file != null) { var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDi

上传文件时的后台处理

asp.net core 上传文件controller保存 long size = 0; var files = Request.Form.Files; if (0 == Request.Form.Files.Count()) return Json("NoPicture"); foreach (var file in files) { var filename = ContentDispositionHeaderValue .Parse(file.ContentDisposition