puzhibing
2023-10-08 22199bbdda579861736420fe26c2873ab0f5d21c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
 * web-upload 工具类(上传文件+进度条)
 */
// 开始上传文件
function UploadFileFn(fileName, $progress) {
    $progress = $( $progress || $("#progressBarFile"));
    $progress.html("0%").css("width", "0%");
 
    // 侦查附件上传情况 ,这个方法大概0.05-0.1秒执行一次
    function OnProgRess(event) {
        var event = event || window.event;
        var loaded = Math.floor(100 * (event.loaded / event.total)); //已经上传的百分比
        if ( loaded >= 95) { loaded = 95; }
        $progress.html(loaded + "%").css("width", loaded + "%");
    };
 
    var upFile = $("#upFile").get(0).files[0]; //input file标签
    var formData = new FormData(); //创建FormData对象
    var xhr = $.ajaxSettings.xhr(); //创建并返回XMLHttpRequest对象的回调函数(jQuery中$.ajax中的方法)
    formData.append("file", upFile); //将上传name属性名(注意:一定要和 file元素中的name名相同),和file元素追加到FormData对象中去
    $.ajax({
        type: "POST",
        url: Feng.ctxPath + "/upload/file", // 后端服务器上传地址
        data: formData, // formData数据
        cache: false, // 是否缓存
        async: true, // 是否异步执行
        processData: false, // 是否处理发送的数据  (必须false才会避开jQuery对 formdata 的默认处理)
        contentType: false, // 是否设置Content-Type请求头
        xhr: function () {
            if (OnProgRess && xhr.upload) {
                xhr.upload.addEventListener("progress", OnProgRess, false);
                return xhr;
            }
        },
        success: function (data) {
            Feng.success("上传成功!");
            $progress.html("100%").css("width", "100%");
            $("#"+ fileName).val(data);
        },
        error: function (data) {
            Feng.error('上传失败!');
        }
    });
};