|
2 | 2 | require 'pp'
|
3 | 3 |
|
4 | 4 | get '/' do
|
5 |
| - HTML_CODE |
| 5 | + send_file File.join(settings.public_folder, 'index.html') |
6 | 6 | end
|
7 | 7 |
|
8 | 8 | post '/upload' do
|
|
17 | 17 | }
|
18 | 18 | ''.tap{|output| PP.pp(details, output) }
|
19 | 19 | end
|
20 |
| - |
21 |
| - |
22 |
| -# |
23 |
| -# Javascript code |
24 |
| -# |
25 |
| - |
26 |
| -JS_CODE =<<-JS |
27 |
| -var uploadBtn = document.getElementById('upload-button-id'); |
28 |
| -uploadBtn.onclick = function (evt) { |
29 |
| - var fileInput = document.getElementById('file-id'); |
30 |
| - var file = fileInput.files[0]; |
31 |
| - var formData = new FormData(); |
32 |
| - var action = '/upload'; |
33 |
| - formData.append('our-file', file); |
34 |
| -
|
35 |
| - var xhr = new XMLHttpRequest(); |
36 |
| - xhr.upload.addEventListener('loadstart', onloadstartHandler, false); |
37 |
| - xhr.upload.addEventListener('progress', onprogressHandler, false); |
38 |
| - xhr.upload.addEventListener('load', onloadHandler, false); |
39 |
| - xhr.addEventListener('readystatechange', onreadystatechangeHandler, false); |
40 |
| - xhr.open('POST', action, true); |
41 |
| - xhr.send(formData); // Simple! |
42 |
| -
|
43 |
| - return false; |
44 |
| -
|
45 |
| - function onloadstartHandler(evt) { |
46 |
| - var div = document.getElementById('upload-status'); |
47 |
| - div.innerHTML = 'Upload started!'; |
48 |
| - } |
49 |
| -
|
50 |
| - function onloadHandler(evt) { |
51 |
| - var div = document.getElementById('upload-status'); |
52 |
| - div.innerHTML = 'Upload successful!'; |
53 |
| - } |
54 |
| -
|
55 |
| - function onprogressHandler(evt) { |
56 |
| - var div = document.getElementById('progress'); |
57 |
| - var percent = evt.loaded/evt.total*100; |
58 |
| - div.innerHTML = 'Progress: ' + percent + '%'; |
59 |
| - } |
60 |
| - |
61 |
| - function onreadystatechangeHandler(evt) { |
62 |
| - var status = null; |
63 |
| -
|
64 |
| - try { |
65 |
| - status = evt.target.status; |
66 |
| - } |
67 |
| - catch(e) { |
68 |
| - return; |
69 |
| - } |
70 |
| -
|
71 |
| - if (status == '200' && evt.target.responseText) { |
72 |
| - var result = document.getElementById('result'); |
73 |
| - result.innerHTML = '<p>The server saw it as:</p><pre>' + evt.target.responseText + '</pre>'; |
74 |
| - } |
75 |
| - } |
76 |
| -} |
77 |
| -JS |
78 |
| - |
79 |
| - |
80 |
| -# |
81 |
| -# HTML code |
82 |
| -# |
83 |
| - |
84 |
| -HTML_CODE =<<-HTML |
85 |
| -<!DOCTYPE html> |
86 |
| -<html lang="en"> |
87 |
| -<head> |
88 |
| - <meta charset="utf-8" /> |
89 |
| - <title>Ajax upload form</title> |
90 |
| -</head> |
91 |
| -<body> |
92 |
| -<form action="/" method="post" enctype="multipart/form-data" id="form-id"> |
93 |
| - <p><input id="file-id" type="file" name="our-file" /> <input type="button" value="Upload" id="upload-button-id" /></p> |
94 |
| - <p><label>Some other field: <input name="other-field" type="text" id="other-field-id" /></label></p> |
95 |
| - <p><input type="submit" value="Save" /></p> |
96 |
| - <script> |
97 |
| -#{JS_CODE} |
98 |
| - </script> |
99 |
| - <p id="upload-status"></p> |
100 |
| - <p id="progress"></p> |
101 |
| - <pre id="result"></pre> |
102 |
| -</form> |
103 |
| -</body> |
104 |
| -</html> |
105 |
| -HTML |
0 commit comments