使用 wt 上传文件
Posted
技术标签:
【中文标题】使用 wt 上传文件【英文标题】:Upload file using wt 【发布时间】:2013-04-17 07:57:41 【问题描述】:我是 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);
【问题讨论】:
到目前为止您发现了什么,为什么没有帮助? 我不确定文件上传到哪里? 到目前为止你发现了什么,为什么没有帮助?你已经看过手册了吗? 没有关于文件将上传到哪里或类似内容的文档。我已经读过这个http://www.webtoolkit.eu/widgets/forms/file-upload.. 如果你知道,你能直接看一些文档吗? @phresnel 我没有从网站上复制示例并寻求您的帮助。我尝试了我在代码中查看的文档,但这没有帮助,这就是我在这里的原因。如上所述,我是 WT 的新手 【参考方案1】:当文件完成时,WFileUpload 将触发一个信号 (uploaded())。然后查看 spoolFileName() 以获取本地磁盘上文件的文件名。也听一下 fileTooLarge(),因为它会通知你上传失败。
WFileUpload 的手册里有很多资料和一个代码示例: http://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFileUpload.html
【讨论】:
【参考方案2】:我意识到这是一篇旧帖子,但我也遇到了问题,而且问题没有得到完全解答(特别是读取文件内容所需的 uploadedFiles 函数)
在您的构造函数(即 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;
我希望这对重定向到这里的其他人有所帮助。
【讨论】:
以上是关于使用 wt 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 jQuery 上传文件之前从文件上传控件中删除文件