前言
课设开发一个http服务器,实现文件上传功能,利用了libevent。
实现功能
利用html的form表单传送文件,Http服务器是利用libevent的http.h的实现的,要将接收到的文件存储下来。实在太菜,写了个超级low的方法。
思路
-
首先分析form的Multipart/form-data格式,主要由两部分构成,分别是请求头(header)和数据(entity);
如图:
其中entity中,通过-----------------------------23613625286061709893270169824(界限boundary)来分割多个数据,这样你就可以传输多个文件了。
-
知道格式之后,我们可以通过evhttp_request的input_buffer取得数据,打印出来看看,如图(request data下面):
-
最后就是我这个笨办法提取文件数据了,通过4个换行“\n”得到文件头,通过减去最后的-----------------------------23613625286061709893270169824(界限boundary)的长度,获得文件尾,再存到文件里就OK了.
-
方法极low,希望向大佬学习更好的方法。
具体代码
// buf