2016-10-02 8 views
2

Я пытаюсь разрешить пользователю загружать несколько больших XML и текстовых файлов для дальнейшей обработки, но WFileUpload не разрешает ничего более 128 КБ, и я не могу найти способ переопределить по умолчанию. Установлено с 3.3.6 на Xubuntu 16.04. Доступ к серверу wthttp на 0.0.0.0:8080 с использованием в основном настроек по умолчанию в Firefox.Wt :: WFileUpload File Too Large

Я просмотрел параметры -help для исполняемого файла file_dialog и нашел параметр -max-memory-request-size, но изменение, похоже, не помогает. Я также отредактировал /etc/wt/wt_config.xml, чтобы изменить размер макс-памяти-запроса на значения выше 128 КБ, также безрезультатно. Основываясь на выходном файле «file_dialog-output.txt», я могу успешно загрузить файл размером 60 КБ, но файл с 2 МБ выходит из строя.

Я строю и запустить следующий код, как отмечено в файле .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); 
} 

Любая помощь очень ценится!

Wt: https://www.webtoolkit.eu/wt

Wt :: WFileUpload: https://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFileUpload.html

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^