位置: 编程技术 - 正文

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

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

  • 为什么会有不同的课程定义
  • 两年前发票怎么红冲
  • 小规模纳税人缴纳增值税怎么做账
  • 银行手续费发票图片
  • 购买金税盘需要带什么
  • 企业投资可以税后扣除吗
  • 企业年金个人所得税扣除标准
  • 应纳税调增调减会计分录
  • 淘宝客佣金代扣款是什么意思
  • 协会会费收入会计科目
  • 跨月增值税专票退回涉及哪些税费
  • 小微企业分公司 企业所得税优惠
  • 小规模专票冲红怎么操作
  • 所得税 费用
  • 油票需要填纳税信息吗
  • 三十个生僻字
  • 生产企业低值高报骗税
  • 企业自有固定资产有哪些
  • 增值税即征即退属于政府补助吗
  • 税务异常不处理会的后果
  • 装修公司什么要自己买
  • 华为手机屏幕变成黑白色怎么恢复
  • 应用程序出现异常怎么办
  • 财务报表包括哪几个表
  • 企事业承包承租经营所得税税法
  • 建筑公司能否开材料票
  • 固定资产要办理什么手续
  • 购买烟酒送人是否需要纳税
  • 银行代扣的年费怎么退
  • PHP:mb_list_encodings()的用法_mbstring函数
  • PHP:curl_multi_select()的用法_cURL函数
  • 增值税发票要审核成功才能开吗
  • Vue3+element-plus 后台管理系统(含登陆注册功能页面)
  • 银行承兑汇票的会计分录
  • 商品削价要本着既能使企业什么又能使商品扩销的原则
  • 公积金怎么做会计科目
  • 梅拉和艾斯德斯
  • 确保政府采购
  • notion all in one
  • 什么是AI工具
  • yolov5部署微信小程序
  • traceroute命令详解
  • 代扣费用会计分录
  • php写在html里不行
  • 自由会计服务类工作者
  • 购买电梯会计账务处理
  • 企业股东分红可抵税吗
  • 实发工资属于什么科目
  • 资源税申报怎么操作
  • sql server怎么恢复
  • 初级职称需要提交什么资料
  • 预收款开发票,不确认收入可以吗?
  • 办公桌椅入什么会计科目
  • 财务预付账款情况说明
  • 追加固定资产原值如何计提折旧
  • 不开发票的收入如何申报纳税?
  • 工会经费可以购买办公用品吗?
  • 总账建账的原则包括
  • 分支机构需要单独设立账簿吗
  • win8强制关闭程序
  • ubuntu怎么设置网络连接
  • centos6启动服务的命令
  • 如何自定义wifi名称
  • win8 设置
  • win10 ie浏览器双击没有反应
  • 常见的css样式
  • div +css
  • 简述JavaScript中全局变量与局部变量的作用域
  • js页面点击怎么随机生成图片
  • js基础教程
  • python多进程模块
  • 日历 caldav
  • Windows下Eclipse+PyDev配置Python+PyQt4开发环境
  • 电子税务局网页版登录入口官网
  • 甘肃国家税务发票查询
  • 村委会税务登记流程
  • 广东etc政策
  • 小规模开票税金怎么算
  • 代收工会经费标准规定
  • 公司租房的房产税应计入哪个科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设