linux c post上传文件,Linux C语言Http POST上传图片
最近需要在嵌入式设备写个POST图片的功能,但是找了很久都没有现成的代码,curl放入嵌入式设备又太臃肿,现在分享一下代码
#include
#include
#include
#include
#include
#include
#include
unsigned long get_file_size(const char *path)
{
unsigned long filesize = -1;
struct stat statbuff;
if(stat(path, &statbuff) < 0){
return filesize;
}else{
filesize = statbuff.st_size;
}
return filesize;
}
int main()
{
int cfd;
int recbytes;
int sin_size;
char buffer[1024]={0};
struct sockaddr_in s_add,c_add;
unsigned short portnum=80;
printf("Hello,welcome to client !\r\n");
cfd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == cfd)
{
printf("socket fail ! \r\n");
return -1;
}
printf("socket ok !\r\n");
bzero(&s_add,sizeof(struct sockaddr_in));
s_add.sin_family=AF_INET;
s_add.sin_addr.s_addr= inet_addr("127.0.0.1");
s_add.sin_port=htons(portnum);
printf("s_addr = %#x ,port : %#x\r\n",s_add.sin_addr.s_addr,s_add.sin_port);
if(-1 == connect(cfd,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
{
printf("connect fail !\r\n");
return -1;
}
printf("connect ok !\r\n");
unsigned long filesize = get_file_size("snap.jpg");
char header[1024];
sprintf(header, "POST /postpic.php HTTP/1.1\r\nContent-Type: application/octet-stream\r\nUser-Agent: cctv.mtv\r\nHost: 127.0.0.1\r\nContent-Length: %ld\r\nCache-Control: no-cache\r\n\r\n", filesize);
printf("%s\r\n", header);
unsigned long totalsize = strlen(header) + filesize;
char* request = (char*)malloc(totalsize);
if (request == NULL){
printf("malloc request fail !\r\n");
return -1;
}
request[0] = '\0';
strcat(request, header);
FILE* fp = fopen("snap.jpg", "rb+");
if (fp == NULL){
printf("open file fail!\r\n");
return -1;
}
int readbyte = fread(request+strlen(request), 1, filesize, fp);
printf("fread return: %d\n", readbyte);
if(-1 == write(cfd,request,totalsize))
{
printf("write fail!\r\n");
return -1;
}
printf("write ok!\r\n");
if(-1 == (recbytes = read(cfd,buffer,1024)))
{
printf("read data fail !\r\n");
return -1;
}
printf("read ok\r\nREC:\r\n");
buffer[recbytes]='\0';
printf("%s\r\n",buffer);
free(request);
fclose(fp);
close(cfd);
return 0;
}
linux c post上传文件,Linux C语言Http POST上传图片相关推荐
- linux下github上传文件,linux下将本地文件上传到github中?
今天编写一份Python基础代码,经过Linux上传到github上,遇到点问题,已经解决 1.首先sudo su 进入root 用户 2.ls 检查出当前文件下有什么文件 3. cd 进入你将要上传 ...
- linux rz 无法上传文件,linux rz上传文件及出错解决方案
在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...
- 通过Xshell7连接云服务Linux系统级上传文件
通过Xshell7连接云服务Linux系统级上传文件 前提准备条件: 1.有一台云服务实例 2.云服务安装了CentOS 7.8 64位系统(根据自己系统环境) 3.记住云服务实例的用户名和密码(忘记 ...
- linux ftp 550 下载,linux ftp服务器上传文件夹时提示550错误问题解决方法
linux ftp服务器上传文件夹时提示550错误问题解决方法 标签: linux ftp服务器 550 中文文件夹上传错误 问题 分类: 计算机 2010-11-06 22:47 前几天在实验室搭配 ...
- linux非root上传文件,root账号无法上传文件到Linux服务器
普通权限的账号,通过ftp工具,可以正常连上Linux服务器,可以正常上传文件.但是root账号却无法上传文件. 网上搜了半天才知道,默认情况下vsftp是不允许root用户登录的,可以通过修改限制来 ...
- 解决Java Web对Linux服务器不能上传文件的难题
一 Java Web文件上传程序 页面中用html或某个js框架,弹出选择上传文件界面,用户选择文件后上传:传到服务器上调用servlet进行处理,把接受到的内容写入服务器相应目录.Java Web上 ...
- linux禁止客户端上传文件_Linux 几种上传文件到linux服务的方法
Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...
- Mac系统下使用SecureCRT连接Linux虚拟机及上传文件
连接虚拟机 再回到第一个界面,点击 Connect 如提示输入密码,则输入 Linux 虚拟机登录密码即可 看到如下界面则表示登录成功(可能需要稍等一会) 若要改变字体大小或颜色,需要打开偏好设置,按 ...
- linux 通过ssh上传文件
一.scp是什么? scp是secure copy的简写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是 ...
- Linux下终端上传文件到Openwrt路由器中
windows下可以用winscp.exe连接路由器,但是Linux下不可行 折腾了好久,总算发现linux下可以用scp来上传文件到路由器里面去 指定要上传的文件myfile.tar.gz,路由器用 ...
最新文章
- 「NLP」用于序列标注问题的条件随机场
- 微软官方python教程下载-微软官方上线 Python 教程
- 【错误记录】Google Play 上架报错 ( 我们检测到您的应用程序包含未经认证的广告SDK或未经批准用于儿童导向服务的SDK )
- IO测试工具之fio详解
- Java中的String、StringBuffer、StringBuilder的区别和使用范围
- python如何导入函数_Python导入(import)模块的方法
- 分布式微服务开发_想要精通分布式微服务架构?你得先学会设计、原理与实战...
- PHP 常用算法集锦
- c语言贪吃蛇游戏代码较难,用C语言编写贪吃蛇代码(难度可选)
- 取消全部呼叫转移代码_怎么取消呼叫转移-那些你不知道的功能,手机忘记带也能接电话,一个代码全搞定...
- 【信息系统项目管理师】第十二十三章 项目采购合同管理(考点汇总篇)
- Google Chrome 插件推荐
- 测试工程师进阶之测试用例发散思维(一)
- 【学习】可靠数据传输协议 RDT
- iPhone X 为啥弃 TouchID?
- Composer中的ThingWorx模型定义—建模
- Android 扫码盒子全局接收付款码(全局事件上层接收多重下发)
- 风云滚滚唱英雄,云的江湖谁做主?
- iOS APP上线 发布流程
- WIN32,GetBitmapBits与GetPixel
热门文章
- linux or unix vi编辑器常用命令
- c语言 move函数,什么是C语言函数
- 雅黑PHP探针Light,雅黑php探针
- 方舟代码_源代码丢失的方舟
- Unity 打包对接 XCode 记录
- MATLAB数据拟合中的若干问题(待续)
- 映射的网络驱动器怎么共享_如何在Windows上通过网络共享CD和DVD驱动器
- android app内存分析,Android手机App内存占用测试方法
- Clover Configurator 5.17.4.0中文版(四叶草clover配置工具)
- 路由器测试的类型和方法