diff --git a/app/app.py b/app/app.py
index 3ec42ffcba80626641bb37f2f6118b36366d684f..e19cf6c522369f1e0493e3ed26197fca00b21e76 100644
--- a/app/app.py
+++ b/app/app.py
@@ -1,3 +1,4 @@
+import io
 import os
 import tempfile
 import uuid
@@ -6,7 +7,7 @@ from functools import wraps
 import argostranslatefiles
 import pkg_resources
 from argostranslatefiles import get_supported_formats
-from flask import Flask, abort, jsonify, render_template, request, url_for, send_from_directory
+from flask import Flask, abort, jsonify, render_template, request, url_for, send_from_directory, send_file
 from flask_swagger import swagger
 from flask_swagger_ui import get_swaggerui_blueprint
 from translatehtml import translate_html
@@ -548,14 +549,8 @@ def create_app(args):
                   type: string
                   description: Error message
         """
-        if request.is_json:
-            json = get_json_dict(request)
-            source_lang = json.get("source")
-            target_lang = json.get("target")
-        else:
-            source_lang = request.values.get("source")
-            target_lang = request.values.get("target")
-
+        source_lang = request.form.get("source")
+        target_lang = request.form.get("target")
         file = request.files['file']
 
         if not file:
@@ -606,8 +601,16 @@ def create_app(args):
         Download a translated file
         """
         filename.split('.').pop(0)
+        filepath = os.path.join(tempfile.gettempdir(), filename)
+
+        return_data = io.BytesIO()
+        with open(filepath, 'rb') as fo:
+            return_data.write(fo.read())
+        return_data.seek(0)
+
+        os.remove(filepath)
 
-        return send_from_directory(directory=tempfile.gettempdir(), filename=filename)
+        return send_file(return_data, attachment_filename=filename)
 
     @app.route("/detect", methods=["POST"])
     @access_check
diff --git a/app/static/js/app.js b/app/static/js/app.js
index 149f2561c0df3e1fad9e25b3b322314a196f9a9a..c92c51bd677ef17a758e6f73c0345ae6bc7f7eee 100644
--- a/app/static/js/app.js
+++ b/app/static/js/app.js
@@ -328,17 +328,18 @@ document.addEventListener('DOMContentLoaded', function(){
 
                 let formdata = new FormData();
                 formdata.append("file", this.inputFile);
-
-                translateFileRequest.send(formdata);
+                formdata.append("source", this.sourceLang);
+                formdata.append("target", this.targetLang);
 
                 this.loadingFileTranslation = true
 
-                translateFileRequest.onreadystatechange = function () {
-                    if (xhr.readyState == 4 && xhr.status == 200) {
+                translateFileRequest.onload = () => {
+                    if (translateFileRequest.readyState === 4 && translateFileRequest.status === 200) {
                         this.loadingFileTranslation = false
                     }
                 }
 
+                translateFileRequest.send(formdata);
             }
         }
     });
diff --git a/app/templates/index.html b/app/templates/index.html
index dad21ae83fd272d0661ac2e97dacfb0ccda82426..37f1144cbdd9836ecc2da2057ee1694bde4c26d8 100644
--- a/app/templates/index.html
+++ b/app/templates/index.html
@@ -196,14 +196,17 @@
                                             <p>[[ inputFile.name ]]</p>
                                                 </div>
                                                 <div class="col s2">
-                                                    <button @click="removeFile" class="btn-flat">
+                                                    <button v-if="loadingFileTranslation !== true" @click="removeFile" class="btn-flat">
                                                         <i class="material-icons">close</i>
                                                     </button>
                                                 </div>
                                             </div>
                                         </div>
                                     </div>
-                                    <button @click="translateFile" class="btn">Translate</button>
+                                    <button @click="translateFile" v-if="loadingFileTranslation === false" class="btn">Translate</button>
+                                    <div class="progress" v-if="loadingFileTranslation">
+                                        <div class="indeterminate"></div>
+                                    </div>
                                 </div>
                             </div>
                         </div>