zoukankan      html  css  js  c++  java
  • 异步上传文件

    异步上传文件多种方式归纳

     

    最近在做异步上传文件的工作,用到了一些库,这里归纳下,暂且不考虑异常处理,仅作为demo。

    1.不用任何插件,利用iframe,将form的taget设为iframe的name,注意设为iframe的id是没用的,跟网上很多说的不太一致

    复制代码
    iframe_upload.htm
    
    <!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>
        <title></title>
    </head>
    <body>
        <form id="form1" method="post" action="Upload.aspx" enctype="multipart/form-data" target="uploadframe">
            <input type="file" id="upload" name="upload" />
            <input type="submit" value="Upload" />
        </form>
        <iframe id="uploadframe" name="uploadframe" style="visibility:hidden"></iframe>
    </body>
    </html>
    复制代码
    复制代码
    Upload.aspx
    
    <%@ Page Language="C#" %>
    <%
        Response.ClearContent();
        try
        {
            if (Request.Files.Count == 0) Response.Write("Error");
            else
            {
                HttpPostedFile file= Request.Files[0];
    
                string ext = System.IO.Path.GetExtension(file.FileName);
                string folder = HttpContext.Current.Server.MapPath("~\Upload\");
                string path = folder + Guid.NewGuid().ToString() + ext;
                file.SaveAs(path);
                
                Response.Write("Success");
            }
        }
        catch
        {
            Response.Write("Error");
        }
    %>
    复制代码

    2.利用ajaxupload.js

    复制代码
    Default.aspx
    
    <!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>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <title>Ajax Upload Demo</title>
            <script type="text/javascript" src="Scirpt/jquery-1.10.2.min.js"></script>
            <script type="text/javascript" src="Scirpt/ajaxupload.js"></script>
            <script type="text/javascript">
                $(function ()
                {
                    // 创建一个上传参数
                    var uploadOption =
                    {
                        // 提交目标
                        action: "Upload.aspx",
                        // 自动提交
                        autoSubmit: false,
                        // 选择文件之后…
                        onChange: function (file, extension) {
                            if (new RegExp(/(jpg)|(jpeg)|(bmp)|(gif)|(png)/i).test(extension)) {
                                $("#filepath").val(file);
                            } else {
                                alert("只限上传图片文件,请重新选择!");
                            }
                        },
                        // 开始上传文件
                        onSubmit: function (file, extension) {
                            $("#state").val("正在上传" + file + "..");
                        },
                        // 上传完成之后
                        onComplete: function (file, response) {
                            if (response == "Success") $("#state").val("上传完成!");
                            else $("#state").val(response);
                        }
                    }
    
                    // 初始化图片上传框
                    var oAjaxUpload = new AjaxUpload('#selector', uploadOption);
    
                    // 给上传按钮增加上传动作
                    $("#up").click(function ()
                    {
                        oAjaxUpload.submit();
                    });
                });
            </script>
        </head>
        <body>
            <div>
                <label>一个普通的按钮:</label><input type="button" value="选取图片" id="selector" />
                <br />
                <label>选择的图片路径:</label><input type="text" readonly="readonly" value="" id="filepath" />
                <br />
                <label>不是submit按钮:</label><input type="button" value="上传" id="up" />
                <br />
                <label>上传状态和结果:</label><input type="text" readonly="readonly" value="" id="state" />
            </div>
        </body>
    </html>
    复制代码
    复制代码
    Upload.aspx
    
    <%@ Page Language="C#" %>
    <%
        Response.ClearContent();
        try
        {
            if (Request.Files.Count == 0) Response.Write("Error");
            else
            {
                HttpPostedFile file= Request.Files[0];
    
                string ext = System.IO.Path.GetExtension(file.FileName);
                string folder = HttpContext.Current.Server.MapPath("~\Upload\");
                string path = folder + Guid.NewGuid().ToString() + ext;
                file.SaveAs(path);
                
                Response.Write("Success");
            }
        }
        catch
        {
            Response.Write("Error");
        }
    %>
    复制代码

    3.利用ajaxfileupload.html

    复制代码
    ajaxfileupload.html
    
    <html>
    <head>
        <title>Ajax File Uploader Plugin For Jquery</title>
        <script src="Scirpt/jquery.js" type="text/javascript"></script>
        <script src="Scirpt/ajaxfileupload.js" type="text/javascript"></script>
        <script type="text/javascript">
            function ajaxFileUpload() {
                $("#loading")
            .ajaxStart(function () {
                $(this).show();
            })
            .ajaxComplete(function () {
                $(this).hide();
            });
    
                $.ajaxFileUpload
                (
                    {
                        url: 'Upload3.aspx',
                        secureuri: false,
                        fileElementId: 'fileToUpload',
                        dataType: 'json',
                        data: { name: 'logan', id: 'id' },
                        success: function (data, status) {
                            if (typeof (data.error) != 'undefined') {
                                if (data.error != '') {
                                    alert(data.error);
                                    //alert(data.error.toJSONString());
                                } else {
                                    alert(data.msg);
                                    //alert(data.toJSONString());
                                }
                            }
                        },
                        error: function (data, status, e) {
                            //alert(e.toJSONString());
                            alert(e);
                        }
                    }
                )
    
                return false;
    
            }
        </script>
    </head>
    <body>
        <div id="wrapper">
            <div id="content">
                <h1>
                    Ajax File Upload Demo</h1>
                <img id="loading" src="loading.gif" style="display: none;">
                <form name="form" action="" method="post" enctype="multipart/form-data">
                <table cellpadding="0" cellspacing="0" class="tableForm">
                    <thead>
                        <tr>
                            <th>
                                Please select a file and click Upload button
                            </th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>
                                <input id="fileToUpload" type="file" size="45" name="fileToUpload" class="input" />
                            </td>
                        </tr>
                    </tbody>
                    <tfoot>
                        <tr>
                            <td>
                                <button class="button" id="buttonUpload" onclick="return ajaxFileUpload();">
                                    Upload</button>
                            </td>
                        </tr>
                    </tfoot>
                </table>
                </form>
            </div>
    </body>
    </html>
    复制代码
    复制代码
    Default.aspx.cs
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Upload
    {
        public partial class Upload3 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                HttpFileCollection files = HttpContext.Current.Request.Files;
                if (null == files || files.Count == 0)
                {
                    //DoNothing
                }
                else
                {
                    string msg = null;
                    msg = UploadMain();
                    //Response.ContentType = "application/json";
                    Response.Write(msg);
                    Response.End();
                }
            }
    
            private string UploadMain()
            {
                HttpPostedFile file = Request.Files[0];
    
                string ext = System.IO.Path.GetExtension(file.FileName);
                string folder = HttpContext.Current.Server.MapPath("~\Upload\");
                string fileName = Guid.NewGuid().ToString() + ext;
                string path = folder + fileName;
                file.SaveAs(path);
    
    
                string message = getMsg("0047 File Upload Success!", null);
    
                return message;
            }
    
            private string getMsg(string msg, string err)
            {
                if (String.IsNullOrEmpty(msg))
                {
                    msg = "";
                }
                if (String.IsNullOrEmpty(err))
                {
                    err = "";
                }
    
                string message = "{";
                message += "msg:'#msg#',";
                message += "error:'#err#'";
                message += "}";
    
                return message.Replace("#msg#", msg).Replace("#err#", err);
    
            }
        }
    }
    复制代码

    4.html5+html5uploader.js

    复制代码
    html5uploder.htm
    
    <!DOCTYPE html>
    <html>
    <script src="Scirpt/jquery-1.10.2.min.js" type="text/javascript"></script>
    <script src="Scirpt/jquery.html5uploader.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("#multiple").html5Uploader({
                postUrl: "Upload2.aspx",
                onSuccess: function (a, b, c) {
                    var img = $('<img/>').attr('src', "http://localhost:83/Upload/"+c).css('width', '140px').css('height', '140px').css('margin', '10px');
                    $('#content').append(img);
                }
            });
        });
    </script>
    <head>
        <title></title>
    </head>
    <body>
        <input id="multiple" type="file" accept="image/*"  multiple />
        <div id="content"></div>
    </body>
    </html>
    复制代码
    复制代码
    Default2.aspx
    
    <%@ Page Language="C#" %>
    <%
        Response.ClearContent();
        try
        {
            if (Request.Files.Count == 0) Response.Write("Error");
            else
            {
                HttpPostedFile file= Request.Files[0];
    
                string ext = System.IO.Path.GetExtension(file.FileName);
                string folder = HttpContext.Current.Server.MapPath("~\Upload\");
                string fileName = Guid.NewGuid().ToString()+ext;
                string path = folder + fileName;
                file.SaveAs(path);
    
                Response.Write(fileName);
            }
        }
        catch
        {
            Response.Write("Error");
        }
    %>
    复制代码
  • 相关阅读:
    非递归实现斐波拉契函数
    二叉树前序、中序遍历得到后序遍历
    python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)
    2018春招-今日头条笔试题-第四题(python)
    2018春招-今日头条笔试题-第三题(python)
    2018春招-今日头条笔试题-第二题(python)
    Karatsuba乘法--实现大数相乘
    NodeJS写模块和引入模块的例子
    nodeJS的了解
    Node.js的适用场景
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3867844.html
Copyright © 2011-2022 走看看