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>