位置: 编程技术 - 正文

文件上传的几个示例分享【推荐】(文件上传的三个条件)

编辑:rootadmin

推荐整理分享文件上传的几个示例分享【推荐】(文件上传的三个条件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:文件上传的三个条件,文件上传格式都有哪些,文件上传功能,文件上传的几个格式,文件上传的几个格式,上传整个文件夹,文件上传的三个条件,文件上传的几个步骤,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇将要和朋友们分享的是几个上传文件的例子和逻辑步奏及自定义个简单的js上传插件我取名为shenniu.upfile-0.0.1.js;近来在讨论组中很有几个朋友咨询上传文件的代码和怎么下载上传的文件,所以写了此篇文章,希望能为朋友们解答一些疑惑或能带来帮助,也谢谢各位多多支持点赞。

以上是个人的看法,下面来正式分享今天的文章吧:

使用iis发布保存上传文件的文件夹 示例A - 普通表单上传文件,Request.Files获取上传文件 示例B - 普通表单上传文件,HttpPostedFileBase获取上传文件 示例C - ajax+FormData上传文件,Request.Files获取上传文件 示例D - 自定义上传插件,Request.Files获取上传文件并提交表单内容

下面一步一个脚印的来分享:

. 使用iis发布保存上传文件的文件夹

首先,因为我们上传文件后,需要查看或者下载这个文件,通常分为两种形式;一种把上传的文件上传到程序的根目录中的某个文件夹中,这种就可以直接通过站点的虚拟路径来访问,这种其实也是使用了iis发布的;第二种是通过程序上传到服务器的某个磁盘中,这种路径通常就不在上传程序站点的目录下,因为想让用户通过其他的url地址访问下载文件,iis发布只是其中一种;其实用iss发布保存上传文件的文件夹和发布程序一样差不多;

我们随便找个某磁盘下面的文件夹当做保存上传文件的文件夹,我这里磁盘路径是:D:DTTest这个TTest文件夹,然后放几张测试的图片,并复制这个路径,在iis中创建一个站点物理路径指向刚才的复制的路径,端口我这里是,我这里没有域名只有用本机的ip代替,这里默认是localhost,配置好后,查看高级设置如:

然后点击"测试文件地址"这个站点-》内容视图 能看到如图的效果

然后,鼠标指上去右键其中某一张图片-》浏览 这样浏览器马上就能看到如图所示的效果:

这样就完成了iis发布文件夹,当然通过http访问图片只是多种方式的一种;有些后缀的文件可能访问不了,需要手动在iis中增加mime类型:

. 示例A - 普通表单上传文件,Request.Files获取上传文件

首先,我们来看下html主要代码:

看是简单简单及简短的代码,其实是上传的重要部分必不可少的,下面就来简单总结下:

form元素的action属性:表单提交地址,这里是文件上传的接口地址 必须采用method="post"提交方式 表单提交数据的格式是enctype="multipart/form-data" type="file"元素必须要有属性name,这里例子是name="fileA" type="file"元素的multiple属性可选,意思是可以选择多个上传文件不用再增加file标签元素来支持上传多个文件了,这个在近几年移动端火热的时候几乎所有最新版本浏览器都支持

再来,我们一起看下后端怎么接受表单提交过来的文件信息,先来看代码:

这段代码的总要点列举如下:

Request.Files:用来获取上传的文件,所有上传文件都以此来获取,什么文件名称也包含在列表中 path变量:就是咋们在前面配置的iis发布文件夹的url路径,只需要传递上传的文件的名称就可以访问 uploadPath:保存文件地址 通过for循环获取上传上来的文件信息和通过file.SaveAs保存到uploadPath指定的文件夹中去 Path.Combine方法把传递进来的参数拼接长一个磁盘路径如第一个参数值是D:/第二个参数是test.png那么这个方法返回的结果是D:/test.png

最终我这个Action返回的是ContentResult,因为我想在页面输入一些信息好截图哈哈,好了咋们通过复制上面的代码运行起来点"提交"按钮得到的效果如图:

文件上传的几个示例分享【推荐】(文件上传的三个条件)

文件夹中选择上的两张图片,就是我们页面上传上来的,通过点击Action返回给页面的下载地址,我们可以在浏览器中浏览图片;好这个上传图片,浏览图片的过程描述大概就是这样,朋友们有收获一些么

. 示例B - 普通表单上传文件,HttpPostedFileBase获取上传文件

经过示例A描述的上传,下载图片流程应该都很清楚了,这个小节主要是换了一种获取上传文件信息的方式,我们通过HttpPostedFileBase获取(其实示例ARequest.Files的最底层就是这个),因为可能上传多个文件所以使用了IEnumerable<HttpPostedFileBase>类型来当做Action的参数,试图部分我们使用HtmlHelper的BeginForm方法来生成form标签,具体代码如:

这里使用@html.BeginForm写法主要是满足使用mvc的同学,简单说下这里使用的BeginForm参数:BeginForm(Action,Controller,表单提交方式,增加form属性enctype);好再来看下Controller的代码如:

上面的代码与示例A对比一下,可以看出处理方式几乎是一模一样呢,那这里就没什么说的了,主要是展示下两种获取file文件信息的方式,但下面的将与众不同

. 示例C - ajax+FormData上传文件,Request.Files获取上传文件

首先,来了解下FormData这个近几年才被几乎所有浏览器支持的js对象,它的构造函数:new FormData (form&#; : HTMLFormElement),后面的&#;号和C#参数差不多表示参数非必须,FormData的最大优点就是可以异步上传一个二进制文件,好吧这个神奇了;继续来将示例C,通常我们提交一般的文字信息直接通过jquery的ajax,post,get等几个方法就能传递到后台,这些直接传参方式无法吧file信息传递给后台,但用到FormData我们就可以用ajax把file文件信息传递给后台,这样我们也可以有更好的无刷新效果的上传文件了,先来看下前端html代码和js代码:

上面的html代码与示例B的格式差不多,只是增加了两个input元素方便我们来测试;重点在js代码中,由上面介绍可以看到FormData的构造只能是HTMLFormElement,所以我们通过document.getElementById("form_c")来获取这个表单的对象传递给它;

然后,我们用普通的$.ajax提交FormData对象到后台进行上传,至于后台我们参照示例A的方式来获取文件信息,不用做什么特殊额处理,只是我们返回的信息是Json数据,代码如:

下面我们看一下添加"提交"按钮执行后返回的效果,可以看出提交后没有跳转到action指向的路由,这样用户体验就好多了:

. 示例D - 自定义上传插件,Request.Files获取上传文件并提交表单内容

首先,我发个插件下载地址shenniu.upfile-0.0.1.js,只需要在试图或者html页面引用jquery-1..2.min.js库和这个插件,我们就可以这样使用:

使用插件的地方和js关键点已经通过代码注释备注好了,朋友们可仔细阅读下,这里要将的是插件上传文件和提交表单数据的逻辑;我们分析下:

form表单中通常有其他的属性数据 form表单的提交数据的后台地址可能和上传文件的后台地址不一样 需要单独上传文件后,返回是否上传成功,再提交form表单的其他数据到后台

由上面几点插件的参数定义为:

这个自定义插件原理和几个重点是:

自动创建一个iframe(用来做无刷新体验),iframe里面创建一个form表单,form表单里面只包含要上传的文件file对象,最终把iframe加入到视图页面中 通过iframe.load()方法来获取上传文件后返回到contentWindow.document.body中的信息,并且执行自定义回调函数,把参数传递给自定义方法方便使用者自由的控制体验效果 创建的form表单里面只能使用页面选择文件上传的文件file对象,使用jquery的clone()函数无法获取到选择的文件对象(这是一个悲剧),所以我这个使用append把用户使用的那个file对象直接包含到创建的form中去,然后在创建一个初始化的file元素对象到原始的视图中去代替被移除掉的file元素,代码如(这个还真花了我2个小时的时间尝试): 使用该插件提交原始表单数据的顺序是:用户点击页面的保存按钮-》通过插件创建的上传文件的form表单,提交上传文件-》上传文件返回成功与否的信息-》收到上传成功新文件名称信息,创建个hidden保存新文件名称到原始form中去-》再真实提交原始form表单的其他数据

下面来看下效果图:

示例D的后台代码分为两部分:1.上传文件的Action 2.真实获取表单form参数的Action,代码如:

好了插件需要讲解的就这么多,不知不觉有只剩我一个人了,该回家了,下面给出整体的代码,插件代码请使用连接获取:

插件下载地址:shenniu.upfile-0.0.1.js

Controller代码:

View代码:

标签: 文件上传的三个条件

本文链接地址:https://www.jiuchutong.com/biancheng/373930.html 转载请保留说明!

上一篇:详解jQuery uploadify文件上传插件的使用方法(详解16型人格)

下一篇:jQuery Validate验证框架详解(推荐)(jquery validation plugin)

  • 房产契税什么时候交的小知识
  • 借贷利息怎么算
  • 个税返还什么时候到账
  • 个体户一定要自己经营吗
  • 机票行程单上没有日期怎么回事
  • 红字发票信息表编号在哪里看
  • 同一笔业务可以开多张发票吗
  • 个人股权转让需要注意什么
  • 企业开办时间是什么意思
  • 印花税漏报,税务局怎么罚款
  • 固定资产的折旧费用计入什么科目
  • 应收债权属于非抵押吗
  • 企业清算的所得税处理包括哪些内容
  • 试驾车抵税
  • 冲销暂估入库如何做会计核算?
  • 政府补助的失业金发放准时吗
  • 集团财务公司可以放款给外部单位吗
  • 公司进货可以计提折旧吗
  • 企业所得税研发费用100%扣除的有哪些企业
  • 合同印花税进哪个科目
  • 附加税的计提基数怎么算
  • 小规模纳税人增值税怎么算
  • 税金及附加附加指什么
  • 企业购买原材料生产时企业还没有赚到钱
  • 对公账户转账有延迟吗
  • 城市维护建设税属于什么税种
  • 如何取消开始菜单的程序
  • 代扣代缴的城建税和教育费附加按委托方所在地的税率
  • Javascript Object和Map之间的转换
  • icm是什么文件
  • php在线阅读器源代码
  • phpcms怎么用
  • 集团公司对子公司如何进行资金管理
  • 事业单位结息会降薪吗
  • vue前端页面设计
  • 科研toc
  • api接口长什么样
  • 总公司与分公司怎么报税
  • 公司请的临时工
  • 增值税专用发票和普通发票的区别
  • 来料加工企业的税率是多少
  • 资产负债表中应交税费为负数是什么意思
  • 收到工会经费返还做收入吗
  • 股东借款作为项目投入的依据
  • 增值税品种
  • 采购原材料凭证是什么
  • 个人所得税应补退税额怎么查
  • mysql 速度慢
  • 未开票的收入如何申报增值税
  • 实收资本为零该怎么办
  • 失控发票进项税额结转成本
  • 金税盘入什么科目
  • 销项税计提多了
  • 固定资产出售的收入属于收入吗
  • 公司注册实收资本
  • 支付金额和实付金额的区别
  • 个体户利润总额是4万应缴纳多少个人经营所得
  • 经营性应收项目和经营性应付项目
  • 企业对于发出的货物
  • 新手会计做账怎么做账
  • sql动态表
  • sql添加后返回主键
  • win8系统打开我的电脑就黑屏
  • win7电脑怎么设置
  • Ubuntu 12.04安装Xen常见问题及解决方法汇总
  • 苹果Mac系统怎么切换输入法
  • linux怎么管理进程
  • win10系统自定义设置
  • cocos2d游戏引擎
  • unity调用android方法
  • linux中date命令详解
  • 《噩梦》
  • nodejs 爬虫
  • three.js入门指南
  • unity全景
  • 详解九章算法
  • javascript的介绍
  • 如何理解python语言
  • 车库契税怎么收费
  • 个体税务怎么查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设