4

私は WT を初めて使用します。アップロード ファイルの例を試しています。送信ボタンをクリックすると、ファイルの進行状況バーが 100% まで表示されますが、どこにアップロードされているかわかりません。特定のパスにアップロードするように定義できますか..

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

private:

    WPushButton *uploadButton;
    Wt::WFileUpload *fu;

    void greet();
};

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();

}

WApplication *createApplication(const WEnvironment& env) {

    return new HelloApplication(env);
}

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

2 に答える 2

4

ファイルが完了すると、WFileUpload はシグナル (uploaded()) を発生させます。次に、spoolFileName() を調べて、ローカル ディスク上のファイルのファイル名を取得します。アップロードが失敗したことが通知されるため、 fileTooLarge() もリッスンします。

WFileUpload のマニュアルには、多くの情報とコード例が付属しています: http://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFileUpload.html

于 2013-04-24T08:56:21.283 に答える
3

これは古い投稿であることは認識していますが、問題もあり、質問に対する回答がありませんでした (具体的には、ファイルの内容を読み取るために必要なUploadFiles関数)。

コンストラクター (つまり、HelloApplication::HelloApplication 関数) で、これを追加して、fileUploaded シグナルに反応します。

uploadButton->uploaded().connect(this, &HelloApplication::fileUploaded);

次に、次のような関数を追加して、ファイルの内容を読み取ります。

void HelloApplication::fileUploaded() {
    //The uploaded filename
    std::string mFilename = fu->spoolFileName(); 

    //The file contents
    std::vector<Wt::Http::UploadedFile> mFileContents = fu->uploadedFiles();

    //The file is temporarily stored in a file with location here
    std::string mContents;
    mContents=mFileContents.data()->spoolFileName();

    //Do something with the contents here
    //Either read in the file or copy it to use it

    //return
    return;
}

これが、ここにリダイレクトされた他の誰かに役立つことを願っています。

于 2015-02-02T03:00:04.653 に答える