cgicc开发(文件上传)

//cgicc文件上传封装
void UploadSoftware()
{// 初始化CGIC环境Cgicc cgi;// 获取上传的文件file_iterator fileIter = cgi.getFile("button_browse"); //from表单中,输入为文件属性(type=file)的name属性值if (fileIter == cgi.getFiles().end()){
#if (DEBUG == true)cout << "file: " << cgi.getFiles().size() << endl;
#endif}else{FormFile& file = *fileIter;
#if (DEBUG == true)std::cout << "<p>file: " << std::endl;std::cout << "<br>    name: "<< file.getName() << std::endl;std::cout << "<br>    filename: "<< file.getFilename() << std::endl;std::cout << "<br>    type: "<< file.getDataType() << "; cgicc::HTTPHTMLHeader=" << cgicc::HTTPHTMLHeader() << std::endl;std::cout << "<br>    size: "<< file.getDataLength() << std::endl;std::cout << "<br>    content: "<< file.getData() << std::endl;
#endif// 保存文件到服务器指定路径ofstream outfile("/opt/software/" + file.getFilename(), ios::out | ios::binary);outfile << file.getData();outfile.close();}
}
<!--html from表单部分-->
<script>
function SubmitUpgrade(obj)
{if(document.getElementById("button_browse").value == "" && document.getElementById("software_bag_url").value == ""){alert("软件升级包未选中");return false;}var ip_pos = radio_json.base.localHost.split('.');var first_ip_pos = Number(ip_pos[3]) + 100;var second_ip_pos = Number(ip_pos[3]) + 200;var first_ip = ip_pos[0] + "." + ip_pos[1] + "." + ip_pos[2] + "." + first_ip_pos;var second_ip = ip_pos[0] + "." + ip_pos[1] + "." + ip_pos[2] + "." + second_ip_pos;console.log("first_ip=" + first_ip + "; second_ip=" + second_ip + "; third=" + radio_json.base.localHost);obj.action="/cgi-bin/uphold_tools/uphold_tools.cgi?upgrade_software&1&" + first_ip + "&" + second_ip + "&" + radio_json.base.localHost + "&client&1";obj.submit();
}
</script>
<form enctype="multipart/form-data" id="form_upgrade" name="form_upgrade" method="post"><td class="css12r">软件升级包:</td><td><input name="software_bag_url" type="text" id="software_bag_url" size="22" maxlength="22" /></td><td><p class="css12l"><input type="file" name="button_browse" id="button_browse" /></p></td><td><p class="css12l"><input type="submit" name="button_upgrade" id="button_upgrade" value="升级" onclick="return SubmitUpgrade(this.form)"/></p></td>
</form>

测例:

 

 注意:

1)上传不同类型的文件需要设置不同的 HTTP Content Header。在文件上传时,Content Header 包含了关于上传内容的类型和其他重要信息,这对于服务器正确解析和处理上传的文件至关重要。一般,cgi程序在main函数开始的位置需要指明Content Header:

cout << "Content-type:text/html;charset=utf-8\r\n\r\n";

当上传.tar.gz类型的压缩包文件时,Content-type:text/html;已不再满足,需要设置tar.gz的Content Header:

HTTPContentHeader("application/x-tar-gz");

2)上传的文件有大小限制。

        一般在web server的配置文件中有指定单次POST的数据流大小,若不指明,默认1M。例如:boa web server的boa.conf中修改上限为20M:20*1024*1024 = 20M = 20971520

# SinglePostLimit: The maximum allowable number of bytes in 
# a single POST.  Default is normally 1MB.SinglePostLimit 20971520

上传文件超过单次请求数据流上限时,报错: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件设计师中级 重点 笔记

文章目录 下午题目网络DNS域名解析分类&#xff1a;域名协议简介网络设备 算法软件工程实体联系图&#xff08;E-R图&#xff09; 其它 下午题目 数据流图补充原则 22年下半年真题 更早-真题大全 答题技巧 网络 DNS域名解析分类&#xff1a; 递归查询的顺序&#xff1a;1.本…

如何在 JavaScript 中验证电子邮件地址

在开发Web应用程序的过程中,验证用户输入的电子邮件地址是一个常见需求。尽管看似简单,但要准确地验证电子邮件地址并非易事。本文将探讨如何使用正则表达式在JavaScript中进行电子邮件地址的验证,同时介绍一些最佳实践与具体代码实例。 使用正则表达式进行验证 正则表达式…

电脑重要文件如何加密保护?教你两种方法

加密是保护电脑重要文件的常见方法&#xff0c;可以有效避免文件数据泄露。那么&#xff0c;电脑重要文件该如何加密保护呢&#xff1f;下面小编就来教你两种方法&#xff0c;帮助你解决文件安全问题。 超级加密3000 超级加密3000是一款专业的电脑数据加密软件&#xff0c;可以…

流量被劫持?不怕,轻松Get 防“窃”技巧!

流量劫持是一种恶意行为&#xff0c;攻击者会在用户访问网站时&#xff0c;将其流量重定向到第三方站点上&#xff0c;导致用户访问的不是原始目标站点。这种行为不仅会影响网站的品牌形象&#xff0c;还会导致用户流失和信息泄露等严重后果。本文将探讨网站如何应对流量劫持。…

SurfaceFinger layer创建过程

SurfaceFinger layer创建过程 引言 本篇博客重点分析app创建Surface时候&#xff0c;SurfaceFlinger是如何构建对应的Layer的主要工作有那些&#xff01; 这里参考的Android源码是Android 13 aosp&#xff01; app端创建Surface 其核心流程可以分为如下接部分: app使用w,h,fo…

window.location.search取不到值

window.location.search window.location.search没有值的原因&#xff1a; URL中使用了 hash &#xff08;指URL中带有#符号&#xff09;,导致URL后面携带的参数被location.hash截取走了&#xff0c;你再使用window.location.search得到的就是空值 打印 window.location 其实…

收银系统源码--零售连锁店铺如何选择适合自己的收银系统?

如果你现在还认为小便利店只要简单的收款&#xff0c;只有大型的连锁便利店才需要收银软件和管理软件&#xff0c;那你就错了&#xff0c;连锁品牌的便利店是必须要用到专业的收银软件&#xff0c;但是小微型的便利店更应该要用专门的软件&#xff0c; 在各行各业逐步革新互联网…

ORCLE删除数据库文件

在实际操作中很少会去删除数据库文件&#xff0c;但是凡事都有例外&#xff0c;由于一些特殊原因&#xff0c;例如存储方式变化、磁盘空间不够等&#xff0c;需要调整和删除一些无效的数据库文件&#xff0c;本文介绍一下实践出来的一种删除数据库文件的操作方式。 删除前请对数…

Linux系统之touch命令的基本使用

Linux系统之touch命令的基本使用 一、touch命令介绍1. touch命令简介2. touch命令作用 二、touch命令帮助1. touch命令的帮助信息2. touch命令的选项解释 三、touch命令的基本使用1. 查看touch工具版本2. 创建空文件3.查看空文件属性4. 修改文件时间戳5. 文件不存在时不创建 四…

【C#】递归移动拷贝目录

当我们需要移动目录时&#xff0c;不能的简单的Directory.Move&#xff0c;这个方法不能支持递归迁移目录 需要我们进行递归进行迁移 void Main() {string sourcePath "D:\费用报销";string destinationPath "D:\文档\费用报销";// 确保源路径存在if (!D…

概率分布函数与误差函数的关系

正态函数&#xff08;高斯分布&#xff09; 对其求[b,x]区间的积分 标准误差函数 以下两个方程相等&#xff08;a,b取值任意&#xff09; 两个函数重合 可知正态函数 f(t) 在[b,x]的区间上积分等于 引用desmos计算器&#xff1a;Desmos | Lets learn together.

2024年,企业薪酬预算怎么做?

新的一年已经开始&#xff0c;许多企业的HR和财务部门正面临着薪酬预算的问题。预算数额过高&#xff0c;老板不会批准&#xff1b;而预算水平过低&#xff0c;则会引起员工不满。因此&#xff0c;薪酬预算是一项棘手的任务。然而&#xff0c;薪酬预算对企业的人力资源管理至关…

5.命令行提示符

一、打开终端&#xff08;有以下几种方式&#xff09; 1.在搜索框输入 terminal 2.命令 &#xff08;1&#xff09;ctrlaltt打开新的终端 &#xff08;2&#xff09;ctrlshiftt&#xff1a;在已经打开终端的基础内&#xff0c;新打开一个同路径的终端。 &#xff08;3&#xf…

使用 Go 实现 HelloWorld 程序,并分析其结构

在学习任何新的编程语言时&#xff0c;编写一个 “Hello, World” 程序通常是最初的入门步骤。这不仅是一个传统&#xff0c;也是一种快速了解语言基本语法和运行机制的有效方法。对于 Go 语言&#xff0c;这个过程不仅可以帮助新手快速入门&#xff0c;还提供了一个窗口&#…

一文读懂什么是PaaS平台

如今&#xff0c;数字化概念广为流传&#xff0c;数字化转型的重要性也不言而喻。在转型过程中&#xff0c;企业不仅需要高效地管理业务流程&#xff0c;还需要不断创新和适应市场变化。在这样的背景下&#xff0c;PaaS平台应运而生&#xff0c;成为了企业实现创新、提升效率的…

充电宝哪家好用推荐?买什么充电宝性价比高?2024年充电宝排行榜

说实话&#xff0c;我其实是个手机重度使用者&#xff0c;买过的充电宝也有无数款了&#xff0c;每次手机没电的时候插座都离得不是特别近&#xff0c;不是要下床充电就是要固定在一个位置充电感觉怪麻烦的&#xff0c;但是有了充电宝后可以在床上玩手机都不用担心手机没电&…

1131. 绝对值表达式的最大值

1131. 绝对值表达式的最大值 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_1131绝对值表达式的最大值 错误经验吸取 原题链接&#xff1a; 1131. 绝对值表达式的最大值 https://leetcode.cn/problems/maximum-of-absolute-value-expr…

JAVA面试题大全(十六)

1、数据库的三范式是什么&#xff1f; 数据库的三范式是数据库设计中的三个基本原则&#xff0c;它们用于确保数据库的结构合理、数据冗余最小化&#xff0c;并提高数据的一致性。这三个范式分别是&#xff1a; 第一范式&#xff08;1NF&#xff09;&#xff1a;确保每个列都是…

机会就在眼前!2025-CISP深圳国际体育展的招展工作火热持续中...

2025-CISP中国&#xff08;深圳&#xff09;国际体育展的招展工作火热持续中&#xff0c;凭借越来越深远的影响力以及前两届的成功举办经验&#xff0c;展位多半已被“抢购”。但小编的同事们同时又反映出一个问题&#xff1a;有一批老展商和新展商已有明确的参展意向&#xff…

第十三周 5.27面向对象的三大特性(封装、继承、多态)(三)

3.instanceof避免类型转换异常: (1)语法:引用名 instanceof 类名 (2)执行:判断引用中存储的实际对象类型是否兼容于后面的类型(是否为后面类型的一种)&#xff0c;兼容一true&#xff0c;不兼容—false (3)作用:可以在程序设计中避免类型转换异常 直接使用案例…