• iframe批量异步上传图片


    1,

    (1)在WebForm3.aspx定义一个iframe,隐藏

    (2)指定form的action指向处理图片页面,target指向iframe(一定要写它的name,而不是id)

    (3)当file的change时提交表单

    下面是WebForm3.aspx的页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication1.TestPage.WebForm3" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="../js/jquery-1.4.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
        //子页面iframe调用,拼接图片,加到本页面
            function UpImg(imgUrl) {          
                var img = "<img src=" + imgUrl + "/>";
                $("#form1").append($(img));
            }
            $(function () {
            //让按钮触发file的click,隐藏file
                $("#roombtn").click(function () {
                    $("#roomfile").click();
                });
                $("#roomfile").change(function () {
                    $("#form1")[0].submit();
                });
            });   
        
        </script>
    </head>
    <body>
        <iframe name="iframe1" style="display:none"  ></iframe>
        <form id="form1"  runat="server" action="PicUpload.aspx" target="iframe1"   >
    
         <input id="roombtn" type="button" class="sub" value="上传图片"  />    
         <input id="roomfile" runat="server" type="file"  multiple="multiple" style="display:none"  />                            
        
        </form>
    </body>
    </html>

    2,

    (1)在页面PicUpload的后台Page_Load方法中处理图片,并且将图片url以js变量的形式输出到PicUpload

    页面。

    (2)PicUpload页面的onload中指定处理图片的函数

    在函数中调用父页面WebForm3.aspx的js方法,将图片添加到WebForm3.aspx页面

    下面是PicUpload后台处理方法:

        public partial class PicUpload : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                HttpFileCollection files = HttpContext.Current.Request.Files;
    
                StringBuilder builder = new StringBuilder();
                builder.Append("var imgUrl='");//定义一个js变量
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile file = files[i];
                    string fileName = Guid.NewGuid().ToString().Replace("-", "") + ".jpg";
                    string filePath = "/";
                    file.SaveAs(System.IO.Path.Combine(MapPath(filePath), fileName));
                    builder.Append(filePath + fileName);//图片的相对路径
                    builder.Append(",");//多张图分隔符号
                }
                builder.Length -= 1;//去除最后一个逗号
                builder.Append("'");
                this.Literal1.Text = builder.ToString();//赋值给前台的Literal1
    
            }
        }

    下面是页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PicUpload.aspx.cs" Inherits="WebApplication1.TestPage.PicUpload" enableEventValidation="false" enableViewStateMac="false"  %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
    <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
     <script type="text/javascript">
      <asp:Literal ID="Literal1" runat="server" EnableViewState="false"></asp:Literal>
     </script>  
    
       <script type="text/javascript">
           //这个函数在onload时执行,在它执行之前,Page_Load已经处理好图片
           function UpImg() {
               var imgs = new Array(); //定义一数组
               imgs = imgUrl.split(","); //字符分割 imgUrl是后台输出到 Literal1上的js变量
    
               for (i = 0; i < imgs.length; i++) {
                   self.parent.UpImg(imgs[i]);//调用父页面的函数
               }
           }
    
       </script>  
    </head>  
    <body onload="UpImg()" >  
      
        <form id="form1" runat="server">  
        <div>  
       
        </div>  
        </form>  
    </body>
    </html>

    注意:

    1,PicUpload页面<%@ Page%>中要加enableEventValidation="false" enableViewStateMac="false"  

    因为是从WebForm3.aspx向其他页面传递图片,而且WebForm3.aspx的form中要加runat,

    否则取不到图片。

    2,如果WebForm3.aspx中放多个file,都可以放在这一个form中,提交到后台可以通过Request.Files的

    Keys判断出是哪个file上传的图片。

  • 相关阅读:
    复习题之后缀表达式
    专项训练之枚举
    专项训练之二分
    深夜毒物
    笑面的学校日常(14)最近一次更新2017 04 06
    了不起的竞赛生(7)(最近一次更新2017 04 06)
    水题日常——动态规划 洛谷
    Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
    Cogs 1708. 斐波那契平方和(矩阵乘法)
    Codevs 1482 路线统计(矩阵乘法)
  • 原文地址:https://www.cnblogs.com/wang7/p/2835610.html
Copyright © 2020-2023  润新知