对于一个完整的WEB服务器来说,应该支持WEB文件导入功能,例如导入业务的配置文件,导入软件升级包进行升级等等。导出功能一般是导出用户配置文件,导出log日志等。导入导出对于HTTP请求来说依然是POST和GET。
文件导入和导出在goahead中已经原生实现了。
一、文件导入
1、在主函数中定义action函数;
websDefineAction("upload", uploadTest);
2、实现uploadTest;
upfile 路径我修改了一下。这里只是做了回显和修改文件名。实际文件传输是在接受请求过程websPump中processContent–>websProcessUploadData已经实现的。接受请求的过程中,如果是上传文件,会把文件放在/tmp下。回调uploadTest前文件已经传输完毕了。
static void uploadTest(Webs *wp)
{
WebsKey *s;
WebsUpload *up;
char *upfile;
websSetStatus(wp, 200);
websWriteHeaders(wp, -1, 0);
websWriteHeader(wp, "Content-Type", "text/plain");
websWriteEndHeaders(wp);
if (scaselessmatch(wp->method, "POST")) {
for (s = hashFirst(wp