File: FileUpload.csp

package info (click to toggle)
drogon 1.9.11%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,820 kB
  • sloc: cpp: 57,270; sh: 297; xml: 20; makefile: 11
file content (87 lines) | stat: -rw-r--r-- 2,986 bytes parent folder | download | duplicates (2)
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>File upload</title>
    <script type="text/javascript">
        var xhr;
        //File uploading method
        function UpladFile() {
            var fileObj = document.getElementById("file").files[0]; // js get file object
            var url =  "/api/attachment/upload"; 

            var form = new FormData(); // FormData object
            form.append("file", fileObj); // File object

            xhr = new XMLHttpRequest();  // XMLHttpRequest object
            xhr.open("post", url, true); //post
            xhr.onload = uploadComplete; 
            xhr.onerror =  uploadFailed; 

            xhr.upload.onprogress = progressFunction;
            xhr.upload.onloadstart = function(){
                ot = new Date().getTime();
                oloaded = 0;
            };

            xhr.send(form); 
        }

        function uploadComplete(evt) {
            var data = JSON.parse(evt.target.responseText);
            if(data.result == "ok") {
                alert("Uploaded successfully!");
            }else{
                alert("Upload failed!");
            }
        }
        
        function uploadFailed(evt) {
            alert("Upload failed!");
        }
        
        function cancleUploadFile(){
            xhr.abort();
        }

        function progressFunction(evt) {
            var progressBar = document.getElementById("progressBar");
            var percentageDiv = document.getElementById("percentage");
            if (evt.lengthComputable) {//
                progressBar.max = evt.total;
                progressBar.value = evt.loaded;
                percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
            }
            var time = document.getElementById("time");
            var nt = new Date().getTime();
            var pertime = (nt-ot)/1000; 
            ot = new Date().getTime(); 
            var perload = evt.loaded - oloaded; 
            oloaded = evt.loaded;
            var speed = perload/pertime;
            var bspeed = speed;
            var units = 'b/s';
            if(speed/1024>1){
                speed = speed/1024;
                units = 'k/s';
            }
            if(speed/1024>1){
                speed = speed/1024;
                units = 'M/s';
            }
            speed = speed.toFixed(1);
            var resttime = ((evt.total-evt.loaded)/bspeed).toFixed(1);
            time.innerHTML = ',Speed: '+speed+units+', the remaining time: '+resttime+'s';
            if(bspeed==0) time.innerHTML = 'Upload cancelled';
        }
    </script>
</head>
<body>
<progress id="progressBar" value="0" max="100" style="width: 300px;"></progress>
<span id="percentage"></span><span id="time"></span>
<br /><br />
<input type="file" id="file" name="myfile" />
<input type="button" onclick="UpladFile()" value="Upload" />
<input type="button" onclick="cancleUploadFile()" value="Cancel" />
</body>
</html>