diff --git a/src/webui/abstractrequesthandler.cpp b/src/webui/abstractrequesthandler.cpp
index fc9479100..0ec2b73c8 100644
--- a/src/webui/abstractrequesthandler.cpp
+++ b/src/webui/abstractrequesthandler.cpp
@@ -50,7 +50,7 @@ HttpResponse AbstractRequestHandler::run()
if (isBanned())
{
status(403, "Forbidden");
- print(QObject::tr("Your IP address has been banned after too many failed authentication attempts."));
+ print(QObject::tr("Your IP address has been banned after too many failed authentication attempts."), CONTENT_TYPE_TXT);
}
else
{
diff --git a/src/webui/extra_translations.h b/src/webui/extra_translations.h
index bd9018ca4..840228afe 100644
--- a/src/webui/extra_translations.h
+++ b/src/webui/extra_translations.h
@@ -65,7 +65,8 @@ static const char *__TRANSLATIONS__[] = {
QT_TRANSLATE_NOOP("HttpServer", "Invalid Username or Password."),
QT_TRANSLATE_NOOP("HttpServer", "Password"),
QT_TRANSLATE_NOOP("HttpServer", "Login"),
- QT_TRANSLATE_NOOP("HttpServer", "qBittorrent web User Interface")
+ QT_TRANSLATE_NOOP("HttpServer", "qBittorrent web User Interface"),
+ QT_TRANSLATE_NOOP("HttpServer", "Upload Failed!")
};
static const struct { const char *source; const char *comment; } __COMMENTED_TRANSLATIONS__[] = {
diff --git a/src/webui/httptypes.h b/src/webui/httptypes.h
index 614e9a4d2..9eabf577c 100644
--- a/src/webui/httptypes.h
+++ b/src/webui/httptypes.h
@@ -40,12 +40,12 @@ const QString HEADER_CONTENT_TYPE = "Content-Type";
const QString HEADER_CONTENT_ENCODING = "Content-Encoding";
const QString HEADER_CONTENT_LENGTH = "Content-Length";
-const QString CONTENT_TYPE_CSS = "text/css";
+const QString CONTENT_TYPE_CSS = "text/css; charset=UTF-8";
const QString CONTENT_TYPE_GIF = "image/gif";
-const QString CONTENT_TYPE_HTML = "text/html";
-const QString CONTENT_TYPE_JS = "text/javascript";
+const QString CONTENT_TYPE_HTML = "text/html; charset=UTF-8";
+const QString CONTENT_TYPE_JS = "text/javascript; charset=UTF-8";
const QString CONTENT_TYPE_PNG = "image/png";
-const QString CONTENT_TYPE_TXT = "text/plain";
+const QString CONTENT_TYPE_TXT = "text/plain; charset=UTF-8";
struct HttpEnvironment
{
diff --git a/src/webui/requesthandler.cpp b/src/webui/requesthandler.cpp
index b53baf8bf..dea1a42ba 100644
--- a/src/webui/requesthandler.cpp
+++ b/src/webui/requesthandler.cpp
@@ -263,11 +263,12 @@ void RequestHandler::action_command_upload()
QBtSession::instance()->addTorrent(filePath);
// Clean up
fsutils::forceRemove(filePath);
- print(QLatin1String(""));
}
else
{
qWarning() << "I/O Error: Could not create temporary file";
+ status(500, "Internal Server Error");
+ print(QObject::tr("I/O Error: Could not create temporary file."), CONTENT_TYPE_TXT);
}
}
}
diff --git a/src/webui/www/public/upload.html b/src/webui/www/public/upload.html
index f00f48bfc..c9bc1218f 100644
--- a/src/webui/www/public/upload.html
+++ b/src/webui/www/public/upload.html
@@ -9,10 +9,15 @@
function stateChangeHandler() {
if (this.readyState == this.DONE) {
- if (this.status == 200)
+ if (this.status == 200) {
window.parent.closeWindows();
- else
- alert("Upload Failed!");
+ } else {
+ if (this.responseText != "") {
+ alert(this.responseText);
+ } else {
+ alert("_(Upload Failed!)");
+ }
+ }
}
}
@@ -44,7 +49,9 @@ window.addEvent('load', function() {
// is XHR2 available?
var xhr = new XMLHttpRequest();
if (xhr.upload)
- $('submitbutton').addClass("invisible");
+ $('submitbutton').addClass("invisible");
+ else
+ $('upload_frame').addEvent('load', function(e) { window.parent.closeWindows(); });
});
@@ -55,7 +62,7 @@ window.addEvent('load', function() {