最近需要在嵌入式设备写个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上传图片相关推荐

  1. linux下github上传文件,linux下将本地文件上传到github中?

    今天编写一份Python基础代码,经过Linux上传到github上,遇到点问题,已经解决 1.首先sudo su 进入root 用户 2.ls 检查出当前文件下有什么文件 3. cd 进入你将要上传 ...

  2. linux rz 无法上传文件,linux rz上传文件及出错解决方案

    在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...

  3. 通过Xshell7连接云服务Linux系统级上传文件

    通过Xshell7连接云服务Linux系统级上传文件 前提准备条件: 1.有一台云服务实例 2.云服务安装了CentOS 7.8 64位系统(根据自己系统环境) 3.记住云服务实例的用户名和密码(忘记 ...

  4. linux ftp 550 下载,linux ftp服务器上传文件夹时提示550错误问题解决方法

    linux ftp服务器上传文件夹时提示550错误问题解决方法 标签: linux ftp服务器 550 中文文件夹上传错误 问题 分类: 计算机 2010-11-06 22:47 前几天在实验室搭配 ...

  5. linux非root上传文件,root账号无法上传文件到Linux服务器

    普通权限的账号,通过ftp工具,可以正常连上Linux服务器,可以正常上传文件.但是root账号却无法上传文件. 网上搜了半天才知道,默认情况下vsftp是不允许root用户登录的,可以通过修改限制来 ...

  6. 解决Java Web对Linux服务器不能上传文件的难题

    一 Java Web文件上传程序 页面中用html或某个js框架,弹出选择上传文件界面,用户选择文件后上传:传到服务器上调用servlet进行处理,把接受到的内容写入服务器相应目录.Java Web上 ...

  7. linux禁止客户端上传文件_Linux 几种上传文件到linux服务的方法

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  8. Mac系统下使用SecureCRT连接Linux虚拟机及上传文件

    连接虚拟机 再回到第一个界面,点击 Connect 如提示输入密码,则输入 Linux 虚拟机登录密码即可 看到如下界面则表示登录成功(可能需要稍等一会) 若要改变字体大小或颜色,需要打开偏好设置,按 ...

  9. linux 通过ssh上传文件

    一.scp是什么? scp是secure copy的简写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是 ...

  10. Linux下终端上传文件到Openwrt路由器中

    windows下可以用winscp.exe连接路由器,但是Linux下不可行 折腾了好久,总算发现linux下可以用scp来上传文件到路由器里面去 指定要上传的文件myfile.tar.gz,路由器用 ...

最新文章

  1. 「NLP」用于序列标注问题的条件随机场
  2. 微软官方python教程下载-微软官方上线 Python 教程
  3. 【错误记录】Google Play 上架报错 ( 我们检测到您的应用程序包含未经认证的广告SDK或未经批准用于儿童导向服务的SDK )
  4. IO测试工具之fio详解
  5. Java中的String、StringBuffer、StringBuilder的区别和使用范围
  6. python如何导入函数_Python导入(import)模块的方法
  7. 分布式微服务开发_想要精通分布式微服务架构?你得先学会设计、原理与实战...
  8. PHP 常用算法集锦
  9. c语言贪吃蛇游戏代码较难,用C语言编写贪吃蛇代码(难度可选)
  10. 取消全部呼叫转移代码_怎么取消呼叫转移-那些你不知道的功能,手机忘记带也能接电话,一个代码全搞定...
  11. 【信息系统项目管理师】第十二十三章 项目采购合同管理(考点汇总篇)
  12. Google Chrome 插件推荐
  13. 测试工程师进阶之测试用例发散思维(一)
  14. 【学习】可靠数据传输协议 RDT
  15. iPhone X 为啥弃 TouchID?
  16. Composer中的ThingWorx模型定义—建模
  17. Android 扫码盒子全局接收付款码(全局事件上层接收多重下发)
  18. 风云滚滚唱英雄,云的江湖谁做主?
  19. iOS APP上线 发布流程
  20. WIN32,GetBitmapBits与GetPixel

热门文章

  1. linux or unix vi编辑器常用命令
  2. c语言 move函数,什么是C语言函数
  3. 雅黑PHP探针Light,雅黑php探针
  4. 方舟代码_源代码丢失的方舟
  5. Unity 打包对接 XCode 记录
  6. MATLAB数据拟合中的若干问题(待续)
  7. 映射的网络驱动器怎么共享_如何在Windows上通过网络共享CD和DVD驱动器
  8. android app内存分析,Android手机App内存占用测试方法
  9. Clover Configurator 5.17.4.0中文版(四叶草clover配置工具)
  10. 路由器测试的类型和方法