2013-05-27 58 views
1

我上傳一個文件後,我試圖打印出它的spoolFileName(),但是雖然應用程序運行平穩,但好像名稱的字符串是空的。任何想法哪裏錯了? (這不是文件的大小,它小於50K)Wt庫的spoolFileName()的用法

#include <Wt/WApplication> 
#include <Wt/WFileUpload> 
#include <Wt/WProgressBar> 
#include <Wt/WBreak> 
#include <Wt/WContainerWidget> 
#include <Wt/WLineEdit> 
#include <Wt/WPushButton> 
#include <Wt/WText> 
#include <Wt/Http/Request> 
#include <Wt/WString> 

using namespace Wt; 

class HelloApplication: public WApplication { 
public: 
    HelloApplication(const WEnvironment& env); 

private: 

    WPushButton *uploadButton; 
    Wt::WFileUpload *fu; 
Wt::WString g; 

    void greet(); 
void fileUploaded(); 
}; 

HelloApplication::HelloApplication(const WEnvironment& env) : 
     WApplication(env) { 
    root()->addStyleClass("container"); 
    setTitle("Hello world");  // application title 

    fu = new Wt::WFileUpload(root()); 
    fu->setFileTextSize(50); // Set the maximum file size to 50 kB. 
    fu->setProgressBar(new Wt::WProgressBar()); 
    fu->setMargin(10, Wt::Right); 

    // Provide a button to start uploading. 
    uploadButton = new Wt::WPushButton("Send", root()); 
    uploadButton->setMargin(10, Wt::Left | Wt::Right); 

    // Upload when the button is clicked. 

    uploadButton->clicked().connect(this, &HelloApplication::greet); 
} 

void HelloApplication::greet() { 
    fu->upload(); 
    uploadButton->disable(); 
    fu->uploaded().connect(this, &HelloApplication::fileUploaded); 
    g = fu->spoolFileName(); 
} 

void HelloApplication::fileUploaded(){        // application title 
    root()->addWidget(new WText(g.value())); 
} 

WApplication *createApplication(const WEnvironment& env) { 

    return new HelloApplication(env); 
} 

int main(int argc, char **argv) { 
    return WRun(argc, argv, &createApplication); 
} 

回答

1

我認爲對於假脫機文件的文件名的文件被上傳之後才得知。 Move

g = fu->spoolFileName(); 

to HelloApplication :: fileUploaded()。