开发者使用 treefrog 建立的工程,生成的是动态库,会被 tfserver 加载,tfserver 将 URL 处理为 controller 、 action 、 argument 三部分,参考URL Routing这个文档。如下:
/controller-name/action-name/argument1/argument2/...
我们简单的改造之前的 HelloWorld 示例即可得到一个 http 文件服务器。
头文件如下:
#ifndef FILESERVERCONTROLLER_H #define FILESERVERCONTROLLER_H #include "applicationcontroller.h" class T_CONTROLLER_EXPORT FileServerController : public ApplicationController { Q_OBJECT public: FileServerController(){} FileServerController(const FileServerController &other); public slots: void index(); void files(); void files(const QString ¶m); }; T_DECLARE_CONTROLLER(FileServerController, fileservercontroller); #endif // FILESERVERCONTROLLER_H
下面是源文件:
#include "fileservercontroller.h" FileServerController::FileServerController(const FileServerController &other) : ApplicationController() {} void FileServerController::index() { renderText("Denied"); } void FileServerController::files() { renderText("Invalid parameter"); } void FileServerController::files(const QString ¶m) { sendFile(param, "application/octet-stream", ""); } T_REGISTER_CONTROLLER(fileservercontroller);
现在,我们可以通过 http://localhost:8800/fileserver/files/appbase.pri 这个 URL 来测试一下下载。我这里是正常工作的。