位置: 编程技术 - 正文

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

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

  • 企业所得税年报怎么查询
  • 增值税进项税额转出是什么意思
  • 代理税务有哪些机构
  • 财务报表年报怎么更正
  • 企业所得税1季度申报季初从业人数个税所属期12月
  • 地下建筑房产税减免优惠政策
  • 纳税人从两处取得收入汇算清缴可以扣除2个60000吗
  • 注册商标怎么做账
  • 营改增后无形资产的出租和出售都属于增值税纳税范围
  • 财务部门使用固定资产的折旧计入管理费用
  • 土地出让金抵减销项税如何申报
  • 收到货款定金计入哪里
  • 已审核已过账已经生成凭证还能修改吗?
  • 企业微信支付密码怎么设置
  • 个人持有原始股要交税吗
  • 价格调节基金税率和计税依据
  • 房地产企业未出售的房子是否要交房产税
  • 取得赔偿款的发票可以抵扣吗
  • 增值税的计税公式为
  • 如何检验发票真伪
  • 有限合伙创投企业
  • 计划分配率怎么算
  • Windows11怎么免费升级专业版
  • 坏账计提方法和比例
  • 出租人负责维修
  • 房地产开发企业增值税怎么算
  • 计提长期待摊费用会计分录怎么写
  • php 静态
  • 非货币性资产对外投资会计处理
  • PHP:Memcached::getDelayed()的用法_Memcached类
  • nw.exe是什么进程
  • 如何防止电子发票重复报销
  • 资产划转增值税 开票怎么开
  • Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项
  • php gtk
  • 阿里前端做什么
  • 固定资产明细账登记
  • 权利许可证照印花税优惠政策
  • 二次封装机
  • OpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Open_CV系列(三)】
  • 关于眼中的世界的作文
  • 个体工商户季报还是月报
  • 一定要确认收入的时候才能开票吗
  • 交易性金融资产处置时的会计核算步骤
  • 织梦怎么采集文章
  • python中的元组
  • vuex数据持久化
  • 发票一式两联
  • 个人社保的缴纳时间
  • 哪些情况可以免征个人所得税
  • 稳岗补贴算不算财政补贴
  • 销售费用期末余额
  • 使用积分换取物的软件
  • 无形资产账面价值和账面余额的区别
  • 私立学校增值税免税吗
  • 私人网银可以转账吗
  • 财务软件可以直接做管理费用吗?
  • sqlserver表结构如何导入到oracle
  • Win10系统中怎么将文件夹进行压缩
  • mac怎么连续播放视频
  • 苹果14pro max价格
  • mac怎么连接打印机设备
  • win7怎么自启动程序
  • linux安装与基本命令
  • 开启win7
  • linux服务器如何配置ip
  • 开发环境配置是干嘛
  • 层序遍历递归实现
  • 滤镜调试
  • android遇到的难题,怎么解决的
  • Strumpy Shader Editor入门教程
  • nodejs如何配置环境变量
  • jquery移动div到另一个div中
  • vue中的计算属性forEach函数的使用
  • bootstrap css框架
  • js移动端拖拽
  • 关于挂职的规定
  • 江苏省电子税务局社保缴费查询
  • 发票上的税额由谁填写
  • 无锡车辆购置税缴纳地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设