场景:公司需要使用cgi实现文件上传,上传结果的信息直接显示到web面。
其中涉及文件上传和保存的代码有:
//保存文件上传文件到/tmp/test.tar.gz
std::ofstream ofs("/tmp/test.tar.gz");
if(!ofs.is_open()){
response(-1,"Failed to open the template file.");
}
// 获取要被上传的文件列表
const_file_iterator file = cgi.getFile("userfile");
if(file != cgi.getFiles().end()) {
// 在 cout 中发送数据类型
cout << HTTPContentHeader(file->getDataType());
// 在 cout 中写入内容
file->writeToStream(ofs);
}
ofs.close();
cout<<"Result:Success."<<endl;
使用上面代码上传文件后,"Result:Success"的信息无法显示到页面上,而是保存到一个文件中:如下图
upgrade.cgi文件