Html标签,file方式,上传文件
恩,如果不记下来,记忆就会模糊掉。
希望自己下次看见这篇博客的时候,会解决掉疑问
--------------------------------------------------------------------
- <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方式,上传文件的更多相关文章
- Ajax方式上传文件
用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 For ...
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...
- Android必知必会-使用okhttp的PUT方式上传文件
注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端. 背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp ...
- koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求
koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...
- 前端 - jquery方式 / iframe +form 方式 上传文件
环境与上一章一样 jquery 方式上传文件: HTML代码 {#html代码开始#} <input type="file" id="img" > ...
- [转] 通过Ajax方式上传文件,使用FormData进行Ajax请求
通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...
- php 下 html5 XHR2 + FormData + File API 上传文件
FormData的作用: FormData对象可以帮助我们自动的打包表单数据,通过XMLHttpRequest的send()方法来提交表单.当然FormData也可以动态的append数据.FormD ...
- egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名
egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名 评论:10 · 阅读:8437· 喜欢:0 一.需求 二.CSRF 校验 三.通过 form 表单上传文件 四.通过 ...
- 通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
<script type="text/jscript"> $(function () { $("#btn_uploadimg").click(fun ...
- web 表单方式上传文件方法(不用flash插件)
原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...
随机推荐
- HTML的语义化,你需要深入了解
有关HTML的一些基础课程,很多网站都有讲,于我而言,真正实践起来,我只要求我能够让它表现出我所想要的结果即可.然而,这种要求,对于后期的维护与测试,真的是......想起日前我们所做的这个项目,那里 ...
- Object-C知识点
Object-C常用的知识点,以下为我在实际开发中用到的知识点,但是又想不起来,需要百度一下的知识点 1. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...
- 【转】JSON和JSONP
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Soc ...
- 使用EPPlus读写xlsx文件
朋友有个需求,想对N张excel表做过滤和合并的处理,拜托我写个小程序.因为用户的背景是非专业用户,因此最好的选择是写个GUI程序,再加上读写excel的需求,所以我的首选就是C#的WinForm了. ...
- JAVA加密算法系列-MD5
package **; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; publi ...
- 【转载】关于c++中的explicit
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); ...
- Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)
这道题是一道爬虫练习题,需要爬链接http://tieba.baidu.com/p/2166231880里的所有妹子图片,点进链接看一下,这位妹子是日本著名性感女演员--杉本由美,^_^好漂亮啊,赶紧 ...
- 如何快速将本地项目托管到到github上?
1,打开你的本地项目文件夹,比如 test-demo: 2,打开github(没有github的要自己注册下), 点击new repository 3,填写项目信息,创建项目 4,复制新建的项目url ...
- 2017腾讯实习生Android客户端开发面试总结
欢迎访问我的个人博客转发请注明出处:http://wensibo.top/2017/04/13/2017Tencent_review/ 前言 先做个自我介绍,本人大三狗一枚,就读的是广州一个普通的一本 ...
- MySQL关于check约束无效的解决办法
首先看下面这段MySQL的操作,我新建了一个含有a和b的表,其中a用check约束必须大于0,然而我插入了一条(-2,1,1)的数据,其中a=-2,也是成功插入的. 所以MySQL只是check,但是 ...