位置: 编程技术 - 正文

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

编辑: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)

  • 小规模纳税人预缴企业所得税
  • 服务费发票的税率是多少
  • 收到扶贫款怎么做会计分录
  • 社保局的员工是公务员吗
  • 盈余公积转增股本的分录怎么写
  • 增值税发票常见问题
  • 材料验收入库并结转差异记账凭证
  • 减少实收资本会引起资产和所有者权益发生变化吗
  • 实物返利缴纳所得税吗?
  • 个体工商户税收优惠政策2023年最新
  • 2019水利基金税率是多少
  • 营改增后印花税计税依据文件
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 收到银行承兑汇票计入什么科目
  • 支票入账怎么填写
  • 销售已使用的固定资产简易计税
  • 非关联企业无偿拆借资金企业所得税
  • 免税企业进项怎么处理
  • linux 界面卡死
  • 小商业企业应交所得税
  • 如何在windows11上安装动态壁纸
  • 进项发票没认证可以开红字申请单吗
  • 单位人工成本计算公式
  • 高温补贴需要缴纳社会保险费吗
  • fg726p.exe
  • Python之ImportError: DLL load failed: 找不到指定的模块解决方案
  • 金融企业营业税税率是多少
  • 预缴企业所得税怎么做账务处理
  • 期末库存盘点表
  • 一分钟玩转钉钉文档是什么东西
  • php 用户
  • 串口发送字节数据的数据格式是什么
  • mysql数据类型怎么判断
  • 发票收到款项未付做什么凭证编制
  • 税率开成0了怎么办
  • 个人劳务费免税额度 年度
  • 通货膨胀溢价的英文
  • 写字楼租金
  • 一般纳税人直接不管会怎么样
  • 增值税计税销售额的确定
  • 简易征收预缴税率怎么算
  • 退教育费附加税怎么申报
  • 管理费用主要核算哪些内容
  • 公司租赁职工车辆账务处理
  • 融资租赁咨询服务合同
  • 执行迟延履行金的规定
  • 普通发票开具红字发票后发票联怎么处理?
  • 行政事业单位的营业执照叫什么
  • 贷款保险费由谁承担
  • 企业职工薪酬如何确定
  • 发票丢失记账联入账
  • 超市会员能便宜多少
  • 总账的建立分为哪几个步骤
  • redhat系统安装gvim
  • 进程关不掉怎么解决
  • -f linux命令
  • win7系统无线网络
  • 怎么免费升级win10系统
  • unity 移动应用开发
  • SDK不兼容Ubuntu64位系统的解决办法!!!
  • linux压缩tar文件命令
  • selenium py
  • 简述matlab中控制系统的数学描述类型
  • python sftp put
  • vue中的event
  • jq filter过滤
  • 置顶聊天折叠怎么开启
  • jQuery Easyui Tabs扩展根据自定义属性打开页签
  • 超精准的电压基准芯片
  • jquerybind事件
  • 点评js异步加载什么意思
  • android实现多线程的方法
  • 十九届三中全会主题
  • 柴油计入什么科目
  • 上海地铁发票可以随便要吗
  • 个人所得税自行纳税申报表(A表)怎么填写
  • 四川成都离剑门多远
  • 广东税务查询系统
  • 国税上海税务局官网
  • 为什么10月份社保交不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设