zhao
2021-06-04 c7ec496f9e41c2227103b3ef776e4a3f91bce6b2
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>处理上传后路径的示例</title>
<link rel="stylesheet" type="text/css" href="http://docs.kissyui.com/kissy-dpl/base/build/css/dpl-pkg.css"/>
<link rel="stylesheet" type="text/css" href="../../assets/demo.css"/>
<script src="http://a.tbcdn.cn/s/kissy/1.2.0/kissy-min.js" charset="utf-8"></script>
</head>
<body>
<article id="doc">
    <h4>处理上传后路径的示例</h4>
    <p>这个demo将演示,如何处理上传后路径。</p>
    <p>uploader有个UrlsInput的子类,专门用于处理路径隐藏域,你可以通过调用UrlsInput的方法和属性,来处理路径。</p>
    <p>点击下来的按钮,上传几个文件。</p>
    <!-- 上传按钮,组件配置请写在data-config内 -->
    <a id="J_UploaderBtn" class="g-u uploader-button uploader-button-focus" data-config=
            '{"type" : "auto",
                "serverConfig":{"action":"upload.php","data":{"dir":"files/"},"dataType" : "json"},
                "name":"Filedata",
                "urlsInputName":"fileUrls"}'
       href="#">
        选择要上传的文件
    </a>
    <!-- 路径urls -->
    <input type="hidden" value="" name="fileUrls" />
    <!-- 文件上传队列 -->
    <ul id="J_UploaderQueue">
 
    </ul>
    <div class="btn-wrapper">
        <input type="button" value="获取文件路径" id="J_GetUrls">
    </div>
    <h5>在页面中增加一个存储路径的隐藏域</h5>
    <pre class='brush: xml'>
        <!-- 路径urls -->
        <input type="hidden" value="" name="fileUrls" />
    </pre>
    <p>留意隐藏域的name必须和你组件初始化配置一致,比如对应的配置"urlsInputName":"fileUrls"。</p>
    <p>组件初始化时会进行个判断,当存在指定name名的元素时,不再向页面插入一个隐藏域。</p>
    <p>当文件上传成功后,组件会自动将文件路径写入到隐藏域。</p>
    <p>组件的配置如下</p>
    <pre class='brush: xml; highlight: [4]'>
        <a id="J_UploaderBtn" class="g-u uploader-button uploader-button-focus" data-config=
                '{"type" : "auto",
                    "serverConfig":{"action":"upload.php","data":{"dir":"files/"},"dataType" : "json"},
                    "name":"Filedata",
                    "urlsInputName":"fileUrls"}'
           href="#">
            选择要上传的文件
        </a>
    </pre>
    <h5>如何手动获取文件路径</h5>
    <pre class='brush: js; highlight: [8, 11]'>
        var ru = new RenderUploader('#J_UploaderBtn', '#J_UploaderQueue');
        //对组件的后续操作务必放在init事件内,因为组件时可能需要异步加载模板
        ru.on("init",function(ev){
            var $ = S.Node.all,
                    //上传组件实例
                    uploader = ev.uploader,
                    //UrlsInput的实例
                    urlsInput = uploader.get('urlsInput');
            $('#J_GetUrls').on('click',function(){
                //为一个数组
                var urls = urlsInput.get('urls');
                alert('所有的url是:' + urls + ',url个数为:'+urls.length);
            })
        })
    </pre>
    <p>Uploader有个urlsInput的属性存储着UrlsInput的实例,而UrlsInput有个urls(数组)的关键属性,可以得到文件路径。 </p>
    <p>UrlsInput有二个关键方法:add()和remove(),用于添加和删除文件路径,一般无需调用。</p>
</article>
<script>
    var S = KISSY,
        //包路径,实际使用请直接配置为"http://a.tbcdn.cn/s/kissy/"
            path = S.Config.debug && "../../../../../../" || "http://a.tbcdn.cn/s/kissy/";
    S.config({
        packages:[ {
            name:"gallery",
            path:path,
            charset:"utf-8"
        } ]
    });
    //加载上传组件入口文件
    KISSY.use('gallery/form/1.3/uploader/index', function (S, RenderUploader) {
        //第一个参数:按钮元素钩子,第二个参数:队列元素钩子
        var ru = new RenderUploader('#J_UploaderBtn', '#J_UploaderQueue');
        //对组件的后续操作务必放在init事件内,因为组件时可能需要异步加载模板
        ru.on("init",function(ev){
            var $ = S.Node.all,
                    //上传组件实例
                    uploader = ev.uploader,
                    //UrlsInput的实例
                    urlsInput = uploader.get('urlsInput');
            $('#J_GetUrls').on('click',function(){
                //为一个数组
                var urls = urlsInput.get('urls');
                alert('所有的url是:' + urls + ',url个数为:'+urls.length);
            })
        })
    })
</script>
 
<!-- 代码高亮 START  -->
<link href='../../assets/syntaxhighlighter_3.0.83/sh.css' rel='stylesheet' type='text/css' />
<script type="text/javascript" src="../../assets/syntaxhighlighter_3.0.83/sh.js"></script>
<script type="text/javascript">SyntaxHighlighter.all();</script>
<!-- 代码高亮 END  -->
</body>
</html>