最近有人问起动态多文件上传,想要做到类似于邮箱添加附件的效果,这个功能其实比较简单,就是往form中添加file元素。在用户选择完文件后,再添加一个file控件,由于file控件过多,视觉上不好看,所以隐藏之前的控件,保持页面上只有一个控件,同时把文件名添加到附件列表中。

注意:页面上初始的file控件必须有runat="server"标志。也就是说,这个页面上必须至少有一个runat="server"的file控件,否则后台接收不到Request.Files。

<FORM id="form1" runat="server">
            <DIV id="div1">
                <INPUT ID="File1" TYPE="file" NAME="File1" runat="server">
                <INPUT TYPE="button" VALUE="添加附件" onclick="javascript:AddFile();">
                <INPUT TYPE="button" VALUE="删除附件" onclick="javascript:RemoveFile();">
                <ASP:LISTBOX id="ListBox1" Width="200px" Height="100px" runat="server"></ASP:LISTBOX>
                <ASP:BUTTON id="Button1" runat="server" Text="保存" Width="60px"></ASP:BUTTON>
            </DIV>
            <ASP:LITERAL ID="lResult" Runat="server"></ASP:LITERAL>
             
        </FORM>
<SCRIPT language="javascript">
<!--
 function AddFile()
 {    
  
    var file = document.getElementById("div1").firstChild;
    if(file.value == "")
    {
        alert("请选择文件!");
        return;
    }
    var o = new Option();
    var ary = file.value.split("\");
    var filename = ary[ary.length-1];
    
    if(CheckOptionsExists(filename,document.getElementById("ListBox1")))
    {
        alert("文件已经存在列表中!");
        return;
    }
    
    
    var f = document.createElement("input");
    f.type = "file";
    f.name = "file"
    div1.insertBefore(f,div1.firstChild);
    
    
    o.innerText = filename;
    o.value = f.uniqueID;
     
    document.getElementById("ListBox1").appendChild(o);
    
    file.style.display = "none";
    
     
    
 }
 
 function RemoveFile()
 {
    var lst = document.getElementById("ListBox1");
    if(lst.selectedIndex == -1)
    {
        alert("请选择要删除的附件!");
        return;
    }
    
    var id = lst.value;
    div1.removeChild(document.all[id]);
    lst.removeChild(lst.options[lst.selectedIndex]);
 }
 
 //检查选项是否存在.
 function CheckOptionsExists(value,ddl)
 {
    for(var i=0;i<ddl.options.length;i++)
    {
        if(ddl.options[i].innerText == value)
        {
            return true;
        }
    }
    return false;
 }
//-->
        </SCRIPT>

后台代码就比较简单了。没有过多的处理,只是一个简单的保存。

private void Button1_Click(object sender, System.EventArgs e)
        {
             
            for(int i=0;i<Request.Files.Count;i++)
            {
                if(Request.Files[i].ContentLength >0)
                {
                    string filename = System.IO.Path.GetFileName(Request.Files[i].FileName);
                    Request.Files[i].SaveAs(Server.MapPath(filename));
                    this.ListBox1.Items.Add(new ListItem(filename,filename));
                }

this.lResult.Text = "保存成功!";
            }
            
        }

转载于:https://www.cnblogs.com/netroot/archive/2007/09/03/879755.html

[转]asp.net 动态添加多附件上传相关推荐

  1. layui upload附件上传

    1.layui upload 动态生成js // 附件上传 // elemId:上传button, elemFile:文件存放地址 function fileUpload(elemId,elemFil ...

  2. ASP.NET多附件上传和附件编辑的实现

    在写这篇文章之前我也在Google上找到了很多有关多附件上传的文章,有用ASP.NET实现的,也有用JSP.PHP等其它技术实现的,但基本前提都是事先通过js脚本来动态创建DOM,然后上传的时候在服务 ...

  3. activiti扩展节点属性(在UserTask节点上添加附件上传功能)

    给节点添加属性: 1.首先在stencilset.json上模仿其他属性添加新的节点属性的基础配置 注意type属性前端根据这个属性值去确认改节点属性在页面上所要表现得形式 ​ {"name ...

  4. 用友nc开发,添加附件上传按钮

    1.在功能注册中找到有附件上传按钮的的模板,这个模板中文件管理就是附件上传 2.通过Document到xml文件中找到他对应的按钮实现类

  5. (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...

  6. .NET技术 ASP.NET中常用的文件上传下载方法(多文件上传)

    文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务器 3.转换成二进制字节流保存到数据库以 ...

  7. 一个简单的自定义多附件上传控件

    在网上提供的都是生成多个上传控件的代码,但大家可以看看21cn,163那里的多附件上传是不是比那些只是生成多个上传控件的界面美观很多呢??      现在就开始做一个类似21CN那样的上传的.先看看我 ...

  8. odoo14 ir.attachment附件上传与附件预览功能

    一.附件上传 这里收集了三种附件上传方式: 1.odoo自带附件上传 安装odoo自带的附件列出及文档模块 这样在编辑界面就可以看到附件上传按钮了(odoo14自己测试没成功,暂时不知道原因) 2. ...

  9. layui 附件上传、预览、删除、下载

    layui在开发文档中提供了 附件上传的方法upload.render(),此篇文章在此模块基础方法上扩展补充了附件预览.删除.下载的实现方法.具体如下: layui 文件/图片上传 layui 相册 ...

最新文章

  1. OA办公系统使用之:Tomcat与mysql的几个常见问题
  2. C#中Struct与Class的区别
  3. Linux_文件系统、磁盘分区_RHEL7
  4. 阿里云 centos 远程可视化桌面部署
  5. 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法
  6. 【C/C++】将二个有序数组合并
  7. 使用Nexus私服代理其他maven仓库(jitpack、jcenter)
  8. 大学编译原理试卷考试题
  9. mysql 查询 汇总_Mysql-Sql查询汇总
  10. 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
  11. 训练日志 2019.1.23
  12. 元素凸起效果_被誉为作物“生殖元素”的“硼”到底有多重要?看完你就明白了...
  13. Python使用Apriori算法分析导演请某演员后还会请哪个演员
  14. 高铁线路开通数据(更新至2021年10月)
  15. 分布式事务处理【TX-LCN】
  16. 人工智能导论测试题——第六章 进化智能与群体智能(2)
  17. Windows 10安装WSA(WindowsSubsystemForAndroid)
  18. python代码桌面壁纸_Python实现设置windows桌面壁纸代码分享
  19. Oracle常见问题一千问
  20. 数据结构与算法--散列表

热门文章

  1. delay 芯片时序output_set_input_delay/set_output_delay
  2. 港股区块链板块持续上行,火币科技涨超50%
  3. A股开盘:深证区块链50指数跌0.20%,136只概念股下跌
  4. 动手学servlet(六) 过滤器和监听器
  5. 一道信号量的问题---卖火车票
  6. Newsgroups数据集介绍
  7. vim编辑器常见使用
  8. 算法与数据结构10.1
  9. poj1091:跳蚤【容斥原理】
  10. sed替换字符时 ' /等符号的处理