.net c# 提交包含文件file 的form表单 获得文件的Stream流

简介:

1.前台html代码  

    要写一个有id的form,可是不能有runat="server"属性。由于一个页面中,有这个属性的form表单仅仅能有一个。

再要有一个有name的iframe,要设置它的样式为不显示。即display为none。

使用iframe的优点是。提交该表单,

不会刷新页面,仅仅会刷新这个不可见的iframe。

    把form表单的target设置为iframe的name值,form表单的 action设置为表单要提交到的处理程序。

这个处理程序中。会接收到form表单中全部有name属性的控件的值,包括文件:

<input type="file" name="uploadfile" id="uploadfile" />

    WebForm的文件要想上传到server端,不能用.net本身的FileUpLoad控件,貌似是由于会遇到权限问题。无法解析。

所以,用本文所用的以表单的形式post过去,再在接收端用C#代码: 
var file = context.Request.Files[0]; var stream = file.InputStream;来获得文件和文件流。

 <form id="fileInfo" enctype="multipart/form-data" target="screct_frame" method="POST" action="../../Handlers/needsPlanCreateHandler.ashx?sign=readExcel">
    
     <input type="file" name="uploadfile" id="uploadfile" />
     <button class="btn btn-default" type="submit" >确定</button>                                        
                                       
 </form>
 <iframe name="screct_frame" style="display: none;"></iframe>
 
2.一般处理程序代码,即上面form所提交到的action端的处理代码
private void ReadExcel(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            try
            {
                var file = context.Request.Files[0];
                if (file.FileName == "")
                {
                    context.Response.Write("<script>parent.callback('请先导入文件');</script>");
                }
                var stream = file.InputStream;
                //这里能够对文件流做些什么
                
            }
            catch (Exception ex)
            {
                context.Response.Write("<script>parent.callback(" + ex.ToString() + ");</script>");
            }
        }
说明:上面的parent.callback()这种方法, callback() 是iframe所在的页面定义的js方法,前面使用parent时由于。

当前提交的是在iframe中,使用parent能够获得页面对象,iframe能够通过parent或top来找到父级页面,

能够运行父级页面的js脚本。





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5182816.html,如需转载请自行联系原作者


相关文章
|
7天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
10天前
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
32 7
|
6天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
6天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
7天前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
6天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
6天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
6天前
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
|
30天前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
34 1
|
1月前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)