asp.net使用JS+form表单Post和Get方式提交数据

最近工作中用到了一种使用JS+form用post方式上传文件一种方式。前台用Html input,使用JS方式往服务器上传文件,具体实现看代码:

前台页面使用aspx网页,使用input 标签,用其file类型;此标签不使用runat="server".不使用服务器控件;这里需要加上一个iframe标签。并隐藏;设置一a标签。用来作为用户点击按钮;调用JS函数:Uploadfun();

 <div>
  <input type="file" id="FileUpLoad" name="FileUpLoad" style="width:140px;" />
  <a href="javascript:void(0);" rel="external nofollow" onclick="Uploadfun()">上传</a>
 <iframe name="hidden_frame" id="hidden_frame" style="width:10%;display:none;"></iframe>
 </div>

JS代码如下:

function Uploadfun(){
      var _file = document.getElementById("FileUpLoad"); //此处是前台页面的 input 标签的ID
      var _form = document.createElenent("form"); //创建一个form
      document.body.appendChild(_form);//添加一个form
      _form.encoding = "multipart/form-data"; //使用该编码规程可以不限制 post表单2M大小的限制
      _form.method="post";//使用POST方式
      _form.action="../Service/FileSrv.aspx?Type=Client&CallFun=UploadFile"; //此处使用Get方式,传到前台页面的后台Server代码层;
      // 这个是本人工作中的项目位置
      _form.target = "hidden_frame";
      var pos = _file.nextSibling;
      _form.appendChild(_file);
      _form.submit();
      pos.parentNode.insertBefore(_file,pos);
      document.body.renoveChild(_form);
    }

C#层代码:就是JS代码中的form的action的所标识。在FileSrv.aspx的后台cs代码中,我们可以通过使用getquery方法,得到使用Get方式传过来的参数;

这个例子里参数Type=Client是一个模块标识,CallFun则是指出cs代码层要调用的响应函数;UploadFile();

代码如下:

private void UploadFile()
    {
      //
      //......其他代码
      //
      HttpFileCollection files = HttpContext.Current.Request.Files;
      if(files.Count>0)
      {
        int lintTemp = files[0].FileName.LastIndexOf(".");//得到input标签中的file文件路径;
        string lstrFileType = string.Empty;
        string lstrContentType = string.Empty;
        if(lintTemp!=-1 &&files[0].FileName.Length>lintTemp+1)
        {
          lstrFileType = files[0].FileName.Substring(lintTemp+1).ToUpper();
        }
        if(lstrFileType.ToUpper()=="JPG")
        {
          if(files[0].ContentLength<10485760)
          {
           //记得要先保存到应用程序发布所在的服务器上!
            files[0].SaveAs(Server.MapPath("~/Files/")+"JPG1."+files[0].FileName.Substring(files[0].FileName.LastIndexOf(".")));
          }
        }
      }
      //
      //......其他代码
      //
    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • ASP.NET使用Ajax返回Json对象的方法

    一.新建一个html页面,如注册页面"Register.htm" <!DOCTYPE html> <html > <head> <title>用户注册</title> <meta charset="utf-8" /> <style type="text/css"> .msg { color:Red; } </style> </head> &

  • ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据

    要求是这样子的,在一个列表页中,用户点击详细铵钮,带记录的主键值至另一页. 在另一外页中,获取记录数据,然后显示此记录数据在网页上. 先用动图演示: 昨天有分享为ng-click传递参数 <angularjs为ng-click事件传递参数>http://www.cnblogs.com/insus/p/7017737.html 上面仅仅是在ng-click传入一个值,但是在ASP.NET MVC中,还需要把这个值传至另外一个视图中<ASP.NET MVC传递参数(model)>htt

  • C#引用类型和值类型的适用场合和区别

    1.值类型 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型. 值类型的变量直接存储数据,分配在托管栈中.变量会在创建它们的方法返回时自动释放. 所有的值类型都是密封(seal)的,所以无法派生出新的值类型. 2.引用类型 引用类型包括:数组,用户定义的类.接口.委托,object,字符串,null类型,类. 引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被CLR中的垃圾回收机制释放. C

  • Asp.NetCore1.1版本去掉project.json后如何打包生成跨平台包

    本章将要和大家分享的是Asp.NetCore1.1版本去掉了project.json后如何打包生成跨平台包, 为了更好跟进AspNetCore的发展,把之前用来做netcore开发的vs2015卸载后并安装了vs2017,这给我带来的直接好处是把我报红的C盘腾出10GB左右的空间,从这里直接能感受到vs2017体积如此之小:之前有写过一篇开源netcore服务的文章开源一个跨平台运行的服务插件 - TaskCore.MainForm,里面有讲述netcore项目生成和部署在win7和ubuntu

  • mongodb使用c#驱动数据插入demo

    Mongodb提供了多种开发语言的驱动,java,python,c++,c# 等,这里选用c#驱动作为测试: 首先上mongo官网下载驱动.Ps:官方网站经常连接不顺利. 还不如直接在vs的nuget管理包中搜索mongoDB.driver. 需要引入的命名空间: using MongoDB.Bson; using MongoDB.Driver; Driver是驱动核心,Bson是和数据格式相关的: 定义一个mongo客户端,一个mongodb,一个数据集合: protected staticI

  • C#后台调用前台JS函数方法

    总结了公司其他人的一些C#后台调用前台的方法: 方法一: 假设前台页面的JS脚本标签中有如下函数: <script> function A() { alert("hello word!"); } </script> 那么在这个页面的后台代码可以这样去实现在C#后台调用前台这个A()函数: 首先在前台拖放一个ItlResult控件id=itlResult; 然后在c# 后台代码中这样调用: itlResult.Text ="<script lang

  • ASP.NET Core Project.json文件(5)

    如果您的应用程序要做任何有用的工作,然后你需要库和框架来完成工作,这种存储和检索数据从一个数据库或呈现复杂的HTML. 在这一章,我们将讨论 project.json 文件.此文件使用 JavaScript 对象符号来存储配置信息,它是.NET 应用程序的核心.如果没有这个文件,你的项目就不会一个 ASP.NET Core项目.在这里,我们将讨论这个文件的一些最重要的特征.让我们双击 project.json 文件打开它. 目前,新建的项目中默认实现的project.json文件代码如下: {

  • Vue.js与 ASP.NET Core 服务端渲染功能整合

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oopsguy.com 我真的很喜欢在前端使用 Vue.js,Vue 服务端渲染直到第二个版本才被支持. 在本例中,我想展示如何将 Vue.js  服务端渲染功能整合 ASP.NET Core. 我们在服务端使用了 Microsoft.AspNetCore.SpaServices 包,该包提供 ASP.N

  • ASP.NET core Web中使用appsettings.json配置文件的方法

    前言 最近在研究把asp.net程序移植到linux上,正好.net core出来了,就进行了学习. 移植代码基本顺利,但是发现.net core中没有ConfigurationManager,无法读写配置文件,单独写个xml之类的嫌麻烦,就谷歌了下,发现了个方法,遂记录如下,方便以后查找: 方法如下 配置文件结构 public class DemoSettings { public string MainDomain { get; set; } public string SiteName {

  • c#操作mongodb插入数据效率

    mongodb的数据插入速度是其一个亮点,同样的10000条数据,插入的速度要比Mysql和sqlserver都要快,当然这也是要看使用者怎么个使用法,你代码如果10000次写入使用10000次连接,那也是比不过其他数据库使用事务一次性提交的速度的. 同样,mongo也提供的一次性插入巨量数据的方法,因为mongodb没有事务这回事,所以在在C#驱动里,具体方法是InsertManyAsync()一次性插入多个文档.与之对应的是InsertOneAsync,这个是一次插入一个文档: Insert

随机推荐