web服务器上传文件过程
通过web服务器上传文件,需要提前准备好下面3步,然后才能通过第4步上传文件
1、web服务器的配置
1.1 将代码src目录中的select.c文件的170行的REQUEST_TIMEOUT改为10*REQUEST_TIMEOUT
1.2 在buildroot中选中boa后保存编译,然后更新nfs_root中内容;
1.3 重启单板
1.4 配置/etc/boa/boa.conf文件
1.4.1 屏蔽掉Group nobody,增加Group 0
1.4.2 去掉Errorlog前的屏蔽
1.4.3 去掉Accesslog前的屏蔽
1.4.4 去掉ServerName前的屏蔽
1.4.5 去掉DocumentRoot前的屏蔽
1.4.6 去掉UserDir前的屏蔽
1.4.7 去掉DirectoryIndex前的屏蔽
1.4.8 KeepAliveMax改为10000
1.4.9 KeepAliveTimeout改为1000
1.4.a 去掉ScriptAlias前的屏蔽,同时将值改为/cgi-bin/ /var/www/cgi-bin/
1.4.b 如果没有SinglePostLimit则需要手工添加,添加后将值改为1048576000,表示支持1G大小
2、服务器上添加cgi程序
以下为cgi程序
#include <stdio.h>
#include "cgi-lib.h"
#include "html-lib.h"
int main()
{
llist entries;
char *value;
html_header();
if (read_cgi_input(&entries) <= 0 ||
(value = cgi_val(entries, "swimage")) == 0)
h1("<BR />Error: failed to read "swimage" CGI input...<BR />
");
else
{
printf("<BR><H1>File "%s" successfully uploaded!</H1>
", value);
if (strcmp(value, "zImage") == 0)
{
h1("OK, that is a zImage: need to store it in flash...<BR />
");
}
}
list_clear(&entries);
h2("Back to the <A HREF=/>main menu</A>...
");
html_end();
return 0;
}
以下为cgi程序对应的Makefile
UCLINUX_DIST=/local/nios2-linux/uClinux-dist-ndk
LIB_CGIHTML=$(UCLINUX_DIST)/user/cgihtml
CC=nios2-linux-uclibc-gcc
CFLAGS= -I$(SRC_DIR) -I. -I$(LIB_CGIHTML)
-O2 -g -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED
-fno-builtin -D__adjtimex=adjtimex
LDFLAGS= -Wl,-d -Wl,-elf2flt $(LIB_CGIHTML)/cgihtml.a
mycgipgm: mycgipgm.o
$(CC) -o $@ $< $(LDFLAGS)
install: mycgipgm
cp mycgipgm $(UCLINUX_DIST)/vendors/Altera/nios2
clean:
rm -f mycgipgm mycgipgm.o
将编译生成的mycgipgm放到/var/www/cgi-bin中,如果没有cgi-bin目录则手工创建
3、web页面中增加上传文件功能
在/var/www/下面新建index.html文件和cgi-bin文件夹
index.html文件内容如下
<html>
<head>
<title>Welcome to zteos</title>
</head>
<body>
<h1>Welcome to zteos!</h1>
<br />
<p>good morning, today is monday and have a fun</p>
<hr />
<H1>SW Upload</H1>
<FORM ACTION="/cgi-bin/mycgipgm" METHOD=POST ENCTYPE="multipart/form-data">
<INPUT TYPE=file name="swimage" /> <BR />
<INPUT TYPE=submit VALUE="Submit"> <INPUT TYPE=reset VALUE="Reset">
</FORM>
</body>
</html>
cgi-bin中放置步骤2编译生成的cgi程序
4、上传文件
以上操作完成后,在命令行中输入boa,如果没有错误boa就已经启动运行
此时在IE浏览器中输入http://192.168.1.100,这里需要看实际IP地址,就会出现相应的web页面,按页面中的提示即可
完成文件的上传。
这里上传的文件会保存在/tmp目录下面
注意/tmp目录的权限,如果权限不够,会出现失败
注意/tmp目录中空间的大小,如果磁盘空间大小小于要存放的文件,也会上报失败
5、错误信息查看
如果有错误出现,错误信息会出现在/var/log/boa/目录下,分别为正常日志和错误日志信息