因此,我在WT项目中嵌入了一个Ace编辑器,并将Ace.js文件的副本加载到其中作为测试,以查看它的外观。负载很好,所以现在我试图保存它,我注意到我的保存功能没有被调用。经过一段时间的调试后,我注意到如果我试图保存的文件大于70000-80000个字符,我的保存功能不会被调用,并且如果文件较小则被称为正常并传递数据。在尝试保存大文件时如何绕过此限制?我在WT项目中运行的代码可以在下面看到,有关如何在此处嵌入它的更多详细信息Using ACE with WT
WText *editor;
MyClass::MyClass(const WEnvironment& env)
: WApplication(env)
{
wApp->require("lib/src/ace.js");
// A WContainerWidget is rendered as a div
editor = new WText("function(){\n hello.abc();\n}\n", root());
editor->setInline(false);
editor->resize(500, 500);
std::string editor_ref = editor->jsRef(); // is a text string that will be the element when executed in JS
std::string command =
editor_ref + ".editor = ace.edit(" + editor_ref + ");" +
editor_ref + ".editor.setTheme(\"ace/theme/monokai\");" +
editor_ref + ".editor.getSession().setMode(\"ace/mode/javascript\");";
editor->doJavaScript(command);
JSignal <std::string> *jsignal = new JSignal<std::string>(editor, "textChanged");
jsignal->connect(this, &MyClass::textChanged);
WPushButton *b = new WPushButton("Save", root());
command = "function(object, event) {" +
jsignal->createCall(editor_ref + ".editor.getValue()") +
";}";
b->clicked().connect(command);
}
void MyClass::textChanged(std::string incoming)
{
}
现在,使用上面的代码,按下Save按钮时将调用textChanged函数。但是,如果加载了一个大文件,我使用下面的函数,并通过调用它来替换“function(){\ n hello.abc(); \ n} \ n”。
std::string MyClass::ReadFile(std::string path)
{
std::ifstream in(path, std::ios::in | std::ios::binary);
if(in)
{
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
return(contents);
}
throw(errno);
}
如前所述,我加载了Ace.js,长度约为15,000行。这导致我的保存调用失败。虽然我确信超过80,000个字符的任何其他文件也会导致它失败。提前谢谢!
答案 0 :(得分:0)
可能需要增加wt_config.xml中的max-request-size。它默认为128K。