从网上下的开源代码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上传文件大小的问题相关推荐

  1. boa+cgi上传文件

    boa+cgi上传文件 从网上下的开源代码boa+cgi,移植到arm里做个在线升级,曾以为最难的flash擦写先搞定了,却卡在上传文件这块.问题是超过400K的文件不能上传,连.cgi文件也没有执行 ...

  2. SpringBoot上传文件大小限制

    SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSize ...

  3. Web.Config文件配置之限制上传文件大小和时间

    在邮件发送系统或者其他一些传送文件的网站中,用户传送文件的大小是有限制的,因为这样不但可以节省服务器的空间,还可以提高传送文件的速度.下面介绍如何在Web.Config文件中配置限制上传文件大小与时间 ...

  4. 【转载】解决Apache2+PHP上传文件大小限制的问题

    原文出处:http://evol1216.blog.163.com/blog/static/13019958020106783623528/ 在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大 ...

  5. 修改PHP上传文件大小限制的方法

    修改PHP上传文件大小限制的方法 1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完. 但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停 ...

  6. PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法

    PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法 参考文章: (1)PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法 (2)https://ww ...

  7. ubuntu php上传文件,Ubuntu中增加apache上传文件大小限制(突破Aapache默认2M上传限制)...

    upload_max_filesize – 没错就是这个,最大上传文件大小限制.你会发现此处默认为2M. memory_limit – 单个脚本可用最大内存,此设置可以防止设计有缺陷的PHP脚本占用所 ...

  8. nginx上传文件大小

    采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误.这个是什么原因导致的呢? 查wiki可知,上传文件大小相关的有三个配置 client_body_buffer_ ...

  9. nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配置

    开发环境:CentOS + Nginx + PHP + MySql + phpMyAdmin 在用 phpMyAdmin 进行 sql 数据库导入的时候,经常需要上传比较大的 sql 数据文件,而这时 ...

  10. 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题

    一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要 ...

最新文章

  1. C++常用函数的使用方法小结
  2. 08-数组中常用的属性及方法
  3. CNN tensorflow 人脸识别
  4. 用计算机对话的小品,爆笑小品剧本台词《作弊记》
  5. pytorch保存和加载文件的方法,从断点处继续训练
  6. 自动化运维环境搭建过程
  7. 记录水电开发的心理【2】
  8. AppStore ipa (苹果内购)笔记
  9. OPC 学习交流感想
  10. 不挂载 组件渲染_12、全局组件和局部组件
  11. 获取自身进程结构和csrss.exe进程结构 explorer.exe进程结构
  12. 微信小程序框架--weui
  13. 黄金矿工~java小游戏【内含源码】
  14. Spring Boot (八): Mybatis 增强工具 MyBatis-Plus
  15. 亚马逊救生衣UL1177/ 浮力背心UL1180怎么办理流程和费用?
  16. 在springboot中导入spring-web相关包导致的错误经验(一)
  17. R语言实验报告【全集】
  18. 周转时间,平均周转时间,带权周转时间
  19. SQL 链接 (代码)
  20. python环境搭建及应用

热门文章

  1. kiv8测量方法_特殊的长度测量方法-初二物理长度的测量
  2. linux启动速度优化
  3. Python的Profile概述
  4. 春秋·左丘明-《左传·成公八年》
  5. 设计师必备15个超赞的配色网站,从此配色无忧!
  6. 慎用P值:它让研究结果不可靠
  7. 瀚高数据库php连接,HighGo瀚高数据库4.3版本安装说明
  8. html网页如何限制ip访问量,Nginx 限制IP访问频率
  9. 手工脱壳之 ASPack压缩壳【随机基址】【重定位表加密】
  10. 格兰蒂亚3 详细剧情攻略