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

最近在做异步上传文件的工作,用到了一些库,这里归纳下,暂且不考虑异常处理,仅作为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");

    }

%>

你可能感兴趣的:(上传文件)