summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2019-02-13 12:49:42 +1100
committerMiguel Jacq <mig@mig5.net>2019-02-13 12:49:42 +1100
commit6c36fcb9539db1adf1ec47223e476c81290420d2 (patch)
tree865e85c9b4cfe6da6c1dcd52d9f95b5fedc31e77
parent1dbd82f74a72c8e786c798219c93a15efb8c9df1 (diff)
downloadonionshare-6c36fcb9539db1adf1ec47223e476c81290420d2.tar.gz
onionshare-6c36fcb9539db1adf1ec47223e476c81290420d2.zip
Use Ajax to send files in receive mode to workaround browser bug with large files
-rw-r--r--share/static/js/receive.js43
-rw-r--r--share/templates/receive.html7
2 files changed, 47 insertions, 3 deletions
diff --git a/share/static/js/receive.js b/share/static/js/receive.js
new file mode 100644
index 00000000..ed4d87e0
--- /dev/null
+++ b/share/static/js/receive.js
@@ -0,0 +1,43 @@
+var form = document.getElementById('send');
+var fileSelect = document.getElementById('file-select');
+var uploadButton = document.getElementById('send-button');
+
+form.onsubmit = function(event) {
+ event.preventDefault();
+
+ // Update button text.
+ uploadButton.innerHTML = 'Uploading...';
+
+ // Get the selected files from the input.
+ var files = fileSelect.files;
+
+ // Create a new FormData object.
+ var formData = new FormData();
+
+ // Loop through each of the selected files.
+ for (var i = 0; i < files.length; i++) {
+ var file = files[i];
+
+ // Add the file to the request.
+ formData.append('file[]', file, file.name);
+ }
+
+ // Set up the request.
+ var xhr = new XMLHttpRequest();
+
+ // Open the connection.
+ xhr.open('POST', window.location.pathname + '/upload', true);
+
+ xhr.onload = function() {
+ if (xhr.status == 200) {
+ uploadButton.innerHTML = 'Send Files';
+ if (document.getElementByClassName('flashes') !=null)
+ var flashes = document.getElementByClassName('flashes')
+ }
+ }
+ }
+
+ // Send the Data.
+ xhr.send(formData);
+}
+
diff --git a/share/templates/receive.html b/share/templates/receive.html
index e85b6ff9..5d2741ed 100644
--- a/share/templates/receive.html
+++ b/share/templates/receive.html
@@ -17,9 +17,9 @@
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="upload-header">Send Files</p>
<p class="upload-description">Select the files you want to send, then click "Send Files"...</p>
- <form method="post" enctype="multipart/form-data" action="{{ upload_action }}">
- <p><input type="file" name="file[]" multiple /></p>
- <p><input type="submit" class="button" value="Send Files" /></p>
+ <form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
+ <p><input type="file" id="file-select" name="file[]" multiple /></p>
+ <p><button type="submit" id="send-button" class="button">Send Files</button></p>
<div>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
@@ -34,5 +34,6 @@
</form>
</div>
</div>
+ <script src="/static/js/receive.js"></script>
</body>
</html>