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. <html>  
  2. <!- Copyright (c) Go Ahead Software Inc., 1999-2010. All Rights Reserved. ->  
  3. <head>  
  4.   
  5. <!-- del by gyr 2011.10.15  
  6. <title>ASP Test Page</title>  
  7. -->  
  8. <title> new document </title> <!-- add by gyr 2011.10.15 -->  
  9.   
  10. <link rel="stylesheet" href="/style/normal_ws.css" type="text/css">  
  11. <language=javascript %>  
  12.   
  13. function uploadFileSubmit()  
  14. {  
  15. //  alert(document.getElementById("document.softupdate"));  
  16.     return;  
  17. }  
  18.   
  19. </head>  
  20.   
  21. <body>  
  22.   
  23. <h1>ASP / JavaScript? Test</h1>  
  24. <h2>Expanded ASP data: <% aspTest("Peter Smith", "112 Merry Way"); %></h2>  
  25.   
  26. <P>  
  27. <% var z; \  
  28.    for (z=0; z<5zz=z+1) \  
  29.      { \  
  30.      if (z<=2) \  
  31.         write(z+" is less than 3<br>"); \  
  32.      else if (z==3) \  
  33.         write(z+" is equal to 3<br>"); \  
  34.      else \  
  35.         write(z+" is greater than 3<br>"); \  
  36.      } \  
  37. %>  
  38. </P>  
  39.   
  40.   
  41.   
  42.   
  43. <span style="color:#3333ff;"><!-- added start for test upload file by gyr 2011.10.15 -->  
  44. <h1>GoForm upload file test</h1>  
  45. <form id="softupdate" action=/goform/formUploadFileTest method=POST enctype="multipart/form-data">  
  46.     <table>  
  47.         Select file: <td> <input id="fileupload" type="file" name="fileupload" size=60 value="">    </td>  
  48.         <td> <input id="fileuploadsubmit" type="submit" name="update" value="update" onClick="uploadFileSubmit()">  </td>  
  49.     </table>  
  50. </form>  
  51. <!-- added end for test upload file by gyr 2011.10.15 -->  
  52.   
  53. </span>  
  54.   
  55. </body>  
  56. </html>  

其中,enctype参数用来设置表单的MIME编码方式,在进行文件(或同时包含文本框)上传时,必须将其属性设置为"multipart/form-data";formUploadFileTest 是web服务器定义的一个处理函数,用于把web服务器接收到的上传文件数据写到存储系统。