goAhead上实现文件上传到嵌入式Web服务器上
本文内容概要:详细描述了在goAhead 2.5上如何实现文件上传(上传文件)到服务器端的功能。 开发环境:
宿 主 机:Windows XP; 虚 拟 机:Ubuntu 9.10;
交叉编译器:arm-uclibc-gcc(arm-linux-gcc-4.3.2可以顺利编译通过) ——————————————————————————————————— 1. 说明
最近调试web文件上传到服务器功能,但在调试时,处理函数总是获取不到文件路径,百思不得其解,查了网上许多文章,但大多提到的是前端文件上传的原理、实现方式等,而未提供服务器端处理的实现(利用C函数实现)。此外,由于对web不了解,花了些时间研究web程序。
2. goAhead实现文件上传的方法
总得来说,goAhead上实现文件上传功能是比较容易的。因为有现成的代码可用,稍微移植下即可。 2.1 实现原理
使用html form即表单提交文件上传请求,web服务器核心处理接收客户端Post过来的文件数据(注意post的是二进制数据),最后,web服务器把接收到文件数据以二进制格式写到服务器本端存储系统。 2.2 前端设计
前端设计比较简单,就是设计一个form,type属性为file,本人是在goAhead-2.5附带的wwwdemo的asptest.asp网页上增加了一个这样的form。
1.
2. 3.
4.5.
8.
10. 11. <% language=javascript %> 12.
13. function uploadFileSubmit() 14. {
15. // alert(document.getElementById(\16. return; 17. } 18.
19. 20.
21.
22.23.
ASP / JavaScript? Test
24.
Expanded ASP data: <% aspTest(\><
/h2> 25. 26.
27. <% var z; \\
28. for (z=0; z<5; zz=z+1) \\ 29. { \\ 30. if (z<=2) \\
31. write(z+\
\32. else if (z==3) \\
33. write(z+\
\34. else \\
35. write(z+\
\36. } \\ 37. %> 38.
43.
44.
GoForm upload file test
45.
51. 52.
53. 54.
55. 56.
其中,enctype参数用来设置表单的MIME编码方式,在进行文件(或同时包含文本框)上传时,必须将其属性设置为\;formUploadFileTest 是web服务器定义的一个处理函数,用于把web服务器接收到的上传文件数据写到存储系统。 2.3 goAhead增加文件上传功能
goAhead-2.5的源码中,是没有包含文件上传功能的,因此需要对goAhead-2.5增加文件上传功能。本人使用v2.1.1版本的补丁,可从下载: 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com
具体下载目录在 /pub/2011/10/17/goAhead上实现文件上传到嵌入式Web服务器上/ 打补丁的时候不是很方便,需要利用对比工具,把文件上传功能的源码增加到goAhead-2.5中。
2.4 把上传文件写到存储系统
在goAhead-2.5的源码main.c中增加文件上传form的处理函数:formUploadFileTest (),代码如下:
1. /*****************************************************************
*************/ 2. /*
3. * for test html upload file to web server