关于boa+cgi上传文件大小的问题
从网上下的开源代码boa+cgi,移植到arm里做个在线升级,曾以为最难的flash擦写先搞定了,却卡在上传文件这块。
问题是超过1024K的文件不能上传,连.cgi文件也没有执行,或者执行却失败了(至少没有执行到.cgi的main函数第一句)。既然小文件能上传,那么可以判定不是代码的问题,何况代码是开源下载基本没做实质性的更改;内存也够了,还有20多兆空间,分区虽然还是稀里糊涂,但上传的过程不涉及flash分区。
那么唯一的可能就是哪里没有配置好。
后来在网上找到一点提示,原来问题出现在这里
1. 修改源代码的defines.h里面的宏SINGLE_POST_LIMIT_DEFAULT
2. 修改boa.conf里面的SinglePostLimit
cgic文件命令为:upload.c
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include"cgic.h"
#define BufferLen 1024
int cgiMain(void){cgiFilePtr file;int targetFile;mode_t mode;char name[128];char fileNameOnServer[64];char contentType[1024];char buffer[BufferLen];char *tmpStr=NULL;int size;int got,t;cgiHeaderContentType("text/html");//取得html页面中file元素的值,应该是文件在客户机上的路径名if (cgiFormFileName("file", name, sizeof(name)) !=cgiFormSuccess) {fprintf(stderr,"could not retrieve filename\n");goto FAIL;} cgiFormFileSize("file", &size);//取得文件类型,不过本例中并未使用cgiFormFileContentType("file", contentType, sizeof(contentType));//目前文件存在于系统临时文件夹中,通常为/tmp,通过该命令打开临时文件。临时文件的名字与用户文件的名字不同,所以不能通过路径/tmp/userfilename的方式获得文件if (cgiFormFileOpen("file", &file) != cgiFormSuccess) {fprintf(stderr,"could not open the file\n");goto FAIL;}t=-1;//从路径名解析出用户文件名while(1){tmpStr=strstr(name+t+1,"\\");if(NULL==tmpStr)tmpStr=strstr(name+t+1,"/");//if "\\" is not path separator, try "/"if(NULL!=tmpStr)t=(int)(tmpStr-name);elsebreak;}strcpy(fileNameOnServer,"./getfile/");strcat(fileNameOnServer,name+t+1);mode=S_IRWXU|S_IRGRP|S_IROTH; //在当前目录下建立新的文件,第一个参数实际上是路径名,此处的含义是在cgi程序所在的目录(当前目录))建立新文件 targetFile=open(fileNameOnServer,O_RDWR|O_CREAT|O_TRUNC|O_APPEND,mode);if(targetFile<0){fprintf(stderr,"could not create the new file,%s\n",fileNameOnServer);goto FAIL;}//从系统临时文件中读出文件内容,并放到刚创建的目标文件中while (cgiFormFileRead(file, buffer, BufferLen, &got) ==cgiFormSuccess){if(got>0)write(targetFile,buffer,got); }cgiFormFileClose(file);close(targetFile);goto END;
FAIL:fprintf(stderr,"Failed to upload");return 1;
END: printf("File \"%s\" has been uploaded",fileNameOnServer);return 0;
}
html文件命名为:upload.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://blog.csdn.net/faihung">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Test Upload</title><meta name="author" content="Jack"><!-- Date: 2007-08-30 -->
</head>
<body>
<form action="cgi-bin/upload.cgi" method="post" enctype="multipart/form-data" target="_blank"><input type="file" name="file" value="" /><input type="submit" name="submit" value="OK">
</form>
</body>
</html>
这个比较具有代表性,就是boa默认上传文件大小为1M,但这里已经改为16M。在/boa/defines.h里配置上传文件大小限制
#define SINGLE_POST_LIMIT_DEFAULT 1024 * 1024 *16/* 1 MB */
之后再按照前面的操作,发现没什么问题。
关于boa+cgi上传文件大小的问题相关推荐
- boa+cgi上传文件
boa+cgi上传文件 从网上下的开源代码boa+cgi,移植到arm里做个在线升级,曾以为最难的flash擦写先搞定了,却卡在上传文件这块.问题是超过400K的文件不能上传,连.cgi文件也没有执行 ...
- SpringBoot上传文件大小限制
SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSize ...
- Web.Config文件配置之限制上传文件大小和时间
在邮件发送系统或者其他一些传送文件的网站中,用户传送文件的大小是有限制的,因为这样不但可以节省服务器的空间,还可以提高传送文件的速度.下面介绍如何在Web.Config文件中配置限制上传文件大小与时间 ...
- 【转载】解决Apache2+PHP上传文件大小限制的问题
原文出处:http://evol1216.blog.163.com/blog/static/13019958020106783623528/ 在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大 ...
- 修改PHP上传文件大小限制的方法
修改PHP上传文件大小限制的方法 1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完. 但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停 ...
- PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法
PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法 参考文章: (1)PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法 (2)https://ww ...
- ubuntu php上传文件,Ubuntu中增加apache上传文件大小限制(突破Aapache默认2M上传限制)...
upload_max_filesize – 没错就是这个,最大上传文件大小限制.你会发现此处默认为2M. memory_limit – 单个脚本可用最大内存,此设置可以防止设计有缺陷的PHP脚本占用所 ...
- nginx上传文件大小
采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误.这个是什么原因导致的呢? 查wiki可知,上传文件大小相关的有三个配置 client_body_buffer_ ...
- nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配置
开发环境:CentOS + Nginx + PHP + MySql + phpMyAdmin 在用 phpMyAdmin 进行 sql 数据库导入的时候,经常需要上传比较大的 sql 数据文件,而这时 ...
- 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要 ...
最新文章
- C++常用函数的使用方法小结
- 08-数组中常用的属性及方法
- CNN tensorflow 人脸识别
- 用计算机对话的小品,爆笑小品剧本台词《作弊记》
- pytorch保存和加载文件的方法,从断点处继续训练
- 自动化运维环境搭建过程
- 记录水电开发的心理【2】
- AppStore ipa (苹果内购)笔记
- OPC 学习交流感想
- 不挂载 组件渲染_12、全局组件和局部组件
- 获取自身进程结构和csrss.exe进程结构 explorer.exe进程结构
- 微信小程序框架--weui
- 黄金矿工~java小游戏【内含源码】
- Spring Boot (八): Mybatis 增强工具 MyBatis-Plus
- 亚马逊救生衣UL1177/ 浮力背心UL1180怎么办理流程和费用?
- 在springboot中导入spring-web相关包导致的错误经验(一)
- R语言实验报告【全集】
- 周转时间,平均周转时间,带权周转时间
- SQL 链接 (代码)
- python环境搭建及应用