Wt::WFileUpload 文件太大
Wt::WFileUpload File Too Large
我正在尝试让用户上传多个大型 XML 和文本文件以供进一步处理,但 WFileUpload 不允许任何超过 128kb 的文件,而且我想不出一种方法来覆盖默认设置。在 Xubuntu 16.04 上安装了 wt 3.3.6。在 0.0.0.0:8080 使用 Firefox 中的大部分默认设置访问 wthttp 服务器。
我查看了 file_dialog 可执行文件的 --help 设置,找到了 --max-memory-request-size 选项,但更改它似乎没有帮助。我还编辑了 /etc/wt/wt_config.xml 以将最大内存请求大小更改为高于 128kb 的值,但也无济于事。根据输出文件 "file_dialog-output.txt" 我可以成功上传 60kb 的文件,但是 2Mb 的文件会失败。
我正在构建 运行 以下代码,如 .hpp 文件中所述:
file_dialog.hpp
//Compile
//g++ file_dialog.cpp -o file_dialog -lwt -lwthttp
//Run
//./file_dialog --docroot . --http-address 0.0.0.0 --http-port 8080
//headers
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WFileUpload>
#include <Wt/WPushButton>
#include <Wt/WBreak>
//FileApplication class definition, derived from WApplication
class FileApplication : public Wt::WApplication
{
public:
FileApplication(const Wt::WEnvironment & env);
Wt::WContainerWidget * file_upload_dialog_container_widget;
Wt::WFileUpload * file_upload;
Wt::WPushButton * file_output_button;
std::ofstream fout;
void tooLargeBytes(long long int byte_size_1);
void warningFileTooLarge(void);
void infoFileUploaded(void);
};
file_dialog.cpp
#include "file_dialog.hpp"
//FileApplication constructer class; returns root with widget
FileApplication::FileApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env)
{
setTitle("File Generation");
this->requestTooLarge().connect(this, &FileApplication::tooLargeBytes);
Wt::WContainerWidget * upload_dialog_container_widget = new Wt::WContainerWidget(root());
Wt::WFileUpload * file_upload = new Wt::WFileUpload(upload_dialog_container_widget);
file_upload->setMultiple(true);
new Wt::WBreak(upload_dialog_container_widget);
Wt::WPushButton * file_output_button = new Wt::WPushButton(upload_dialog_container_widget);
file_output_button->setText("Upload");
file_upload->fileTooLarge().connect(this, &FileApplication::warningFileTooLarge);
file_upload->uploaded().connect(this, &FileApplication::infoFileUploaded);
file_output_button->clicked().connect(file_upload, &Wt::WFileUpload::upload);
file_output_button->clicked().connect(file_output_button, &Wt::WPushButton::disable);
}
//Application - File too large
void FileApplication::tooLargeBytes(long long int byte_size_1)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "byte_size_1";
fout << byte_size_1;
fout.close();
}
//File too large
void FileApplication::warningFileTooLarge(void)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "File too large";
fout.close();
}
//File successfully uploaded
void FileApplication::infoFileUploaded(void)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "File uploaded";
fout.close();
}
//Application constructor function
Wt::WApplication * createApplication(const Wt::WEnvironment& env)
{
return new FileApplication(env);
}
//Main function
int main(int argc, char ** argv)
{
return Wt::WRun(argc, argv, &createApplication);
}
非常感谢任何帮助!
权重:https://www.webtoolkit.eu/wt
Wt::W文件上传:https://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFileUpload.html
解决方法:在wt_config.xml
范围内增加参数max-request-size
感谢这些解决方案的资源:
https://www.webtoolkit.eu/wt/doc/reference/html/overview.html
http://redmine.webtoolkit.eu/boards/2/topics/11351?r=11943#message-11943
我正在尝试让用户上传多个大型 XML 和文本文件以供进一步处理,但 WFileUpload 不允许任何超过 128kb 的文件,而且我想不出一种方法来覆盖默认设置。在 Xubuntu 16.04 上安装了 wt 3.3.6。在 0.0.0.0:8080 使用 Firefox 中的大部分默认设置访问 wthttp 服务器。
我查看了 file_dialog 可执行文件的 --help 设置,找到了 --max-memory-request-size 选项,但更改它似乎没有帮助。我还编辑了 /etc/wt/wt_config.xml 以将最大内存请求大小更改为高于 128kb 的值,但也无济于事。根据输出文件 "file_dialog-output.txt" 我可以成功上传 60kb 的文件,但是 2Mb 的文件会失败。
我正在构建 运行 以下代码,如 .hpp 文件中所述:
file_dialog.hpp
//Compile
//g++ file_dialog.cpp -o file_dialog -lwt -lwthttp
//Run
//./file_dialog --docroot . --http-address 0.0.0.0 --http-port 8080
//headers
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WFileUpload>
#include <Wt/WPushButton>
#include <Wt/WBreak>
//FileApplication class definition, derived from WApplication
class FileApplication : public Wt::WApplication
{
public:
FileApplication(const Wt::WEnvironment & env);
Wt::WContainerWidget * file_upload_dialog_container_widget;
Wt::WFileUpload * file_upload;
Wt::WPushButton * file_output_button;
std::ofstream fout;
void tooLargeBytes(long long int byte_size_1);
void warningFileTooLarge(void);
void infoFileUploaded(void);
};
file_dialog.cpp
#include "file_dialog.hpp"
//FileApplication constructer class; returns root with widget
FileApplication::FileApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env)
{
setTitle("File Generation");
this->requestTooLarge().connect(this, &FileApplication::tooLargeBytes);
Wt::WContainerWidget * upload_dialog_container_widget = new Wt::WContainerWidget(root());
Wt::WFileUpload * file_upload = new Wt::WFileUpload(upload_dialog_container_widget);
file_upload->setMultiple(true);
new Wt::WBreak(upload_dialog_container_widget);
Wt::WPushButton * file_output_button = new Wt::WPushButton(upload_dialog_container_widget);
file_output_button->setText("Upload");
file_upload->fileTooLarge().connect(this, &FileApplication::warningFileTooLarge);
file_upload->uploaded().connect(this, &FileApplication::infoFileUploaded);
file_output_button->clicked().connect(file_upload, &Wt::WFileUpload::upload);
file_output_button->clicked().connect(file_output_button, &Wt::WPushButton::disable);
}
//Application - File too large
void FileApplication::tooLargeBytes(long long int byte_size_1)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "byte_size_1";
fout << byte_size_1;
fout.close();
}
//File too large
void FileApplication::warningFileTooLarge(void)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "File too large";
fout.close();
}
//File successfully uploaded
void FileApplication::infoFileUploaded(void)
{
std::ofstream fout ("file_dialog-output.txt");
fout << "File uploaded";
fout.close();
}
//Application constructor function
Wt::WApplication * createApplication(const Wt::WEnvironment& env)
{
return new FileApplication(env);
}
//Main function
int main(int argc, char ** argv)
{
return Wt::WRun(argc, argv, &createApplication);
}
非常感谢任何帮助!
权重:https://www.webtoolkit.eu/wt
Wt::W文件上传:https://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFileUpload.html
解决方法:在wt_config.xml
范围内增加参数max-request-size感谢这些解决方案的资源:
https://www.webtoolkit.eu/wt/doc/reference/html/overview.html
http://redmine.webtoolkit.eu/boards/2/topics/11351?r=11943#message-11943