goAhead上实现文件上传到嵌入式Web服务器上 下载本文

内容发布更新时间 : 2024/12/23 21:42:24星期一 下面是文章的全部内容请认真阅读。

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. new document 9.

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.

39. 40. 41. 42.

43.

44.

GoForm upload file test

45.

pe=\> 46.

47. Select file:

48.

49.

e=60 value=\>

=\ onClick=\>

50.

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