使用Html5异步上传文件,支持跨域,带有上传进度条

来源:互联网 发布:下载和目软件 编辑:程序博客网 时间:2024/06/06 02:16

服务器准备IIS

需要设置IIS里面的HTTP响应标头,如图添加如下设置,添加这项“Access-Control-Allow-Origin”,只有添加了这行才能支持跨域,不然像Chrome浏览器会报错




页面代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <title>Html5上传文件</title>
</head>
<body>
    <div class="app">
        <h1>Html5上传文件测试,带进度条</h1>
        <div>
            <input type="file" value="" id="fileInput" name="files" onchange="fileSelected()" />
            <div style="margin:30px;">
                <input type="button" value="上传" onclick="uploadFile()" />
            </div>
            <div style="margin:30px;">
                <div id="fileName"></div>
                <div id="fileSize"></div>
                <div id="fileType"></div>
            </div>
            <div style="margin:30px;width:500px;height:15px;border:1px solid #aeaeae;">
                <div id="progress" style="background:#4cff00;height:15px;width:0%;"></div>
                <div id="percentNumber"></div>
            </div>
            <div style="margin:30px;">
                <div id="msg"></div>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        function fileSelected() {
            //重置状态显示
            document.getElementById("msg").innerHTML = "";
            document.getElementById('percentNumber').innerHTML = '';
            document.getElementById("progress").style.width = "0%";
            var file = document.getElementById('fileInput').files[0];
            if (file) {
                var fileSize = 0;
                if (file.size > 1024 * 1024)
                    fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
                else
                    fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
                document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
                document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
                document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
            }
        }


        function uploadFile() {
            var fd = new FormData();
            fd.append("fileInput", document.getElementById('fileInput').files[0]);
            var xhr = new XMLHttpRequest();
            xhr.upload.addEventListener("progress", uploadProgress, false);
            xhr.addEventListener("load", uploadComplete, false);
            xhr.addEventListener("error", uploadFailed, false);
            xhr.addEventListener("abort", uploadCanceled, false);            
            xhr.open("POST", "http://10.0.0.200:9001/Home/Upload");//修改为自己服务器接口地址
            //xhr.setRequestHeader("Access-Control-Allow-Origin", "*");//需要在IIS里面配置,就可以跨域请求了
            //xhr.setRequestHeader("Content-Type", "multipart/form-data");
            xhr.send(fd);
        }
        function uploadProgress(evt) {
            if (evt.lengthComputable) {
                var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                document.getElementById('percentNumber').innerHTML = percentComplete + '%';
                var jindutiao = document.getElementById("progress");
                jindutiao.style.width = percentComplete + "%";
            }
            else {
                document.getElementById('percentNumber').innerHTML = '不支持进度计算';
            }
        }
        function uploadComplete(evt) {
            //evt.target.responseText
            document.getElementById("msg").innerHTML = "上传成功";
        }
        function uploadFailed(evt) {
            document.getElementById("msg").innerHTML = "上传过程中有一个错误";
        }
        function uploadCanceled(evt) {
            document.getElementById("msg").innerHTML = "用户取消了上传或者浏览器删除了连接";
        }
    </script>
</body>
</html>


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金立手机黑屏打不开怎么办 小米8se自动跳出广告怎么办 小米手机总跳出广告怎么办 小米手机总是出现广告怎么办 红米1s开机黑屏怎么办 红米手机打电话黑屏怎么办 小米4c打游戏卡怎么办 电脑总出现拨号连接怎么办 win10电脑没有拨号连接怎么办 红米手机黑屏了怎么办 小米4s黑屏了怎么办 鼠标的左键失灵怎么办 小米5左键失灵怎么办 小米4左键失灵怎么办 小米5s左键失灵怎么办 单击鼠标左键就会自动删除?怎么办 华为五s开不开机怎么办 荣耀8关不了机怎么办 三星s7左键失灵怎么办 华为mate7死机黑屏了怎么办 小米手机max黑屏打不开怎么办 小米max开不了机怎么办 小米6接听电话声音小怎么办 小米手机接听电话声音小怎么办 小米5听筒声音小怎么办 红米手机不能开机怎么办 小米5x升级失败怎么办 安卓手机打电话黑屏怎么办 来电话就出黑屏怎么办 oppo手机停留在开机界面怎么办 小米4c死机了怎么办 苹果手机拨打电话时黑屏怎么办 华为畅享6黑屏怎么办 手机拨号键盘变小了怎么办 小米5s手机黑屏打不开怎么办 小米5s黑屏只能开关机怎么办 手机拨号键没了怎么办 华为手机桌面拨号图标不见了怎么办 华为手机拨号图标不见了怎么办 小米4s屏幕显示黑屏怎么办 平板拨号键没了怎么办