diff --git a/src/httpserver/qhttpserverresponse.cpp b/src/httpserver/qhttpserverresponse.cpp
index 5941418..e997e96 100644
--- a/src/httpserver/qhttpserverresponse.cpp
+++ b/src/httpserver/qhttpserverresponse.cpp
@@ -56,7 +56,7 @@ QHttpServerResponse::QHttpServerResponse(const QHttpServerResponse::StatusCode s
 }
 
 QHttpServerResponse::QHttpServerResponse(const char *data)
-    : QHttpServerResponse(QByteArray(data))
+    : QHttpServerResponse(QByteArray::fromRawData(data, qstrlen(data)))
 {
 }
 
@@ -70,6 +70,13 @@ QHttpServerResponse::QHttpServerResponse(const QByteArray &data)
 {
 }
 
+QHttpServerResponse::QHttpServerResponse(QByteArray &&data)
+    : QHttpServerResponse(
+            QMimeDatabase().mimeTypeForData(data).name().toLocal8Bit(),
+            std::move(data))
+{
+}
+
 QHttpServerResponse::QHttpServerResponse(const QJsonObject &data)
     : QHttpServerResponse(mimeApplicationJson,
                           QJsonDocument(data).toJson(QJsonDocument::Compact))
@@ -89,6 +96,31 @@ QHttpServerResponse::QHttpServerResponse(const QByteArray &mimeType,
 {
 }
 
+QHttpServerResponse::QHttpServerResponse(QByteArray &&mimeType,
+                                         const QByteArray &data,
+                                         const StatusCode status)
+    : QHttpServerResponse(
+            new QHttpServerResponsePrivate{std::move(mimeType), data, status})
+{
+}
+
+QHttpServerResponse::QHttpServerResponse(const QByteArray &mimeType,
+                                         QByteArray &&data,
+                                         const StatusCode status)
+    : QHttpServerResponse(
+            new QHttpServerResponsePrivate{mimeType, std::move(data), status})
+{
+}
+
+QHttpServerResponse::QHttpServerResponse(QByteArray &&mimeType,
+                                         QByteArray &&data,
+                                         const StatusCode status)
+    : QHttpServerResponse(
+            new QHttpServerResponsePrivate{std::move(mimeType), std::move(data),
+                                           status})
+{
+}
+
 QHttpServerResponse::~QHttpServerResponse()
 {
 }
diff --git a/src/httpserver/qhttpserverresponse.h b/src/httpserver/qhttpserverresponse.h
index 030b8c4..73fa52d 100644
--- a/src/httpserver/qhttpserverresponse.h
+++ b/src/httpserver/qhttpserverresponse.h
@@ -54,14 +54,30 @@ public:
     QHttpServerResponse& operator=(QHttpServerResponse &&other) = delete;
 
     QHttpServerResponse(const StatusCode statusCode);
+
     QHttpServerResponse(const char *data);
+
     QHttpServerResponse(const QString &data);
+
     explicit QHttpServerResponse(const QByteArray &data);
+    explicit QHttpServerResponse(QByteArray &&data);
+
     QHttpServerResponse(const QJsonObject &data);
     QHttpServerResponse(const QJsonArray &data);
+
     QHttpServerResponse(const QByteArray &mimeType,
                         const QByteArray &data,
                         const StatusCode status = StatusCode::Ok);
+    QHttpServerResponse(QByteArray &&mimeType,
+                        const QByteArray &data,
+                        const StatusCode status = StatusCode::Ok);
+    QHttpServerResponse(const QByteArray &mimeType,
+                        QByteArray &&data,
+                        const StatusCode status = StatusCode::Ok);
+    QHttpServerResponse(QByteArray &&mimeType,
+                        QByteArray &&data,
+                        const StatusCode status = StatusCode::Ok);
+
     virtual ~QHttpServerResponse();
     static QHttpServerResponse fromFile(const QString &fileName);