首页 > Web开发 > 详细

Html标签,file方式,上传文件

时间:2017-02-12 18:46:02      阅读:308      评论:0      收藏:0      [点我收藏+]

 

恩,如果不记下来,记忆就会模糊掉。

 

希望自己下次看见这篇博客的时候,会解决掉疑问

--------------------------------------------------------------------


<form method="post" enctype="multipart/form-data" action="Upload.ashx" >
        <input type="file" name="fileName" />
        <input type="submit" name="上传" />
    </form>

enctype属性设置为multipart/form-data,浏览器会把上传的文件名和文件数据放在结构体内,传给Action中指向的文件中。

 

 

1.第一步,我们要首先获取到,传过来的结构体内的文件数据。

HttpPostedFile file=context.Request.Files[0];

  

因为这里我们设置只有一个file,只会传一个文件。所以后面index中的值直接给0。

 

 

2.验证用户点击上传表单之后,file中是否为空

if (file.ContentLength > 0)

 

这里用的验证是ContentLength 获得传递Http传递的实体长度,file为空,则返回false

 

3.获得用户上传文件的,文件名及拓展名。

//Path.GetFileName(path)以获得文件名

//Path.GetExtension(path)获得文件拓展名

 

string oldfileName = Path.GetFileName(file.FileName); //获得文件名+拓展名
string fileExt = Path.GetExtension(oldfileName);     //获得拓展名

  

4.判断用户上传的文件,是否为图片。验证后缀名

...省略

5.用Guid重写用户上传的文件名

 //使用Guid时,只需Guid.NewGuid()

string newFileName = Guid.NewGuid().ToString();

  

 

6.新建目录,并判断站点中是否含有此路径,如没有则新建

 //Dicectory.Exists(Path)此方法用来确定,磁盘上是否具有相同路径,返回Bool

//Directory.CreateDirectory(Path) 此方法用来生成目录和子目录。

string dir = "/UpLoad/" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day;
                if (!Directory.Exists(context.Request.MapPath(dir)))
                {
                    Directory.CreateDirectory(context.Request.MapPath(dir));
                }

  


7.拼凑文件名-带路径。

 

 string fullFileName = dir + newFileName + fileExt;

  

 

8.上传文件

//SavsAs(完整文件名) 上传文件。

file.SaveAs(context.Request.MapPath(fullFileName)); 


9.输出

 

..略

------------------------------------------------------------------------------------------------------------------------------

留给自己的问题。

1.上传一个文件,那么在浏览器内部发生了什么?Http协议怎么传输?

2.为什么enctype写在action后不生效?

3.此过程发生在哪个阶段?

Html标签,file方式,上传文件

原文:http://www.cnblogs.com/Zhang-silence/p/6391316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!