本文内容概要:详细描述了在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。
- <html>
- >
- <head>
- <link rel="stylesheet" href="/style/normal_ws.css" type="text/css">
- <% language=javascript %>
- function uploadFileSubmit()
- {
- // alert(document.getElementById("document.softupdate"));
- return;
- }
- head>
- <body>
- <h1>ASP / JavaScript? Testh1>
- <h2>Expanded ASP data: <% aspTest("Peter Smith", "112 Merry Way"); %>h2>
- <P>
- <% var z; \
- for (z=0; z<5; zz=z+1) \
- { \
- if (z<=2) \
- write(z+" is less than 3<br>"); \
- else if (z==3) \
- write(z+" is equal to 3<br>"); \
- else \
- write(z+" is greater than 3<br>"); \
- } \
- %>
- P>
- <span style="color:#3333ff;">
- <h1>GoForm upload file testh1>
- <form id="softupdate" action=/goform/formUploadFileTest method=POST enctype="multipart/form-data">
- <table>
- Select file: <td> <input id="fileupload" type="file" name="fileupload" size=60 value=""> td>
- <td> <input id="fileuploadsubmit" type="submit" name="update" value="update" onClick="uploadFileSubmit()"> td>
- table>
- form>
- span>
- body>
- html>
其中,enctype参数用来设置表单的MIME编码方式,在进行文件(或同时包含文本框)上传时,必须将其属性设置为"multipart/form-data";formUploadFileTest 是web服务器定义的一个处理函数,用于把web服务器接收到的上传文件数据写到存储系统。
时间:2011-10-18 10:30
来源:LinuxIDC.com
作者:LinuxIDC.com
原文链接