libcurl 上传文件至 web服务器
测试环境搭建, 使用 wamp server (windows下的 apache+MySQL+php)
libcurl vc6 工程代码 下载地址: http://download.csdn.net/detail/mtour/8060775
处理上传文件 php 代码
- <?php
- if ($_FILES["file"]["error"] > 0)
- {
- echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
- }
- else
- {
- echo "Upload: " . $_FILES["file"]["name"] . "<br />";
- echo "Type: " . $_FILES["file"]["type"] . "<br />";
- echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
- echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
- if (file_exists("./" . $_FILES["file"]["name"]))
- {
- echo $_FILES["file"]["name"] . " already exists. ";
- }
- else
- {
- move_uploaded_file($_FILES["file"]["tmp_name"],
- "./" . $_FILES["file"]["name"]);
- echo "Stored in: " . "/" . $_FILES["file"]["name"];
- }
- }
- ?>
libcurl 代码
- // libCur1.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include "curl/curl.h"
- #define MAX_BUFF_LEN 1048576 /*1M*/
- #define POST_URL "http://10.10.1.4/d/upload.php"
- int get_file_size(char *filename)
- {
- FILE* fp = NULL;
- int nFileLen = 0;
- fp = fopen(filename, "rb");
- if (fp == NULL)
- {
- return 0;
- }
- fseek(fp,0,SEEK_END); //定位到文件末
- nFileLen = ftell(fp); //文件长度
- return nFileLen;
- }
- int http_post_file(const char *url, const char *filename)
- {
- CURL *curl = NULL;
- CURLcode res;
- struct curl_httppost *post=NULL;
- struct curl_httppost *last=NULL;
- struct curl_slist *headerlist=NULL;
- if(filename == NULL || url == NULL)
- return -1;
- printf("URL: %s\n", url);
- printf("filename: %s\n", filename);
- /* Add simple file section */
- if( curl_formadd(&post, &last, CURLFORM_COPYNAME, "file",
- CURLFORM_FILE, filename, CURLFORM_END) != 0)
- {
- fprintf(stderr, "curl_formadd error.\n");
- return -1;
- }
- /* Fill in the submit field too, even if this is rarely needed */
- curl_formadd(&post, &last,
- CURLFORM_COPYNAME, "submit",
- CURLFORM_COPYCONTENTS, "OK",
- CURLFORM_END);
- //curl_global_init(CURL_GLOBAL_ALL);
- curl = curl_easy_init();
- if(curl == NULL)
- {
- fprintf(stderr, "curl_easy_init() error.\n");
- curl_formfree(post);
- return -1;
- }
- curl_easy_setopt(curl, CURLOPT_HEADER, 0);
- curl_easy_setopt(curl, CURLOPT_URL, url); /*Set URL*/
- curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
- int timeout = 5;
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
- res = curl_easy_perform(curl);
- if(res != CURLE_OK)
- {
- fprintf(stderr, "curl_easy_perform[%d] error.\n", res);
- curl_formfree(post);
- return -1;
- }
- curl_easy_cleanup(curl);
- return 0;
- }
- int main()
- {
- char sFilePath[128]="d:\\20130828131421113.jpg";
- //Check File Size
- if(get_file_size(sFilePath) >= MAX_BUFF_LEN)
- {
- fprintf(stderr, "File Size is Big!\n");
- return -1;
- }
- //POST File
- http_post_file(POST_URL, sFilePath);
- getchar();
- return 0;
- }
libcurl 上传文件至 web服务器的更多相关文章
- Java客户端通过Http发送POST请求上传文件到web服务器
http://www.cnblogs.com/WilliamJiang/archive/2012/04/29/2475883.html 1.朋友的一个需求,让我给他实现,需求是这样的,需要用ASP.n ...
- C# 上传文件至远程服务器
C# 上传文件至远程服务器(适用于桌面程序及web程序) 2009-12-30 19:21:28| 分类: C#|举报|字号 订阅 最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传 ...
- ASP.NET上传文件到远程服务器(HttpWebRequest)
/// <summary> /// 文件上传至远程服务器 /// </summary> /// <param name="url">远程服务地址 ...
- libcurl 上传文件,不管文件什么格式 libcurl开发指南
libcurl 上传文件,不管文件什么格式 libcurl开发指南 上传文件 https://curl.haxx.se/download.html curl命令参数很多,这里只列出我曾经用过.特别是在 ...
- SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案
SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOEx ...
- asp.net 服务器 上传文件到 FTP服务器
private string ftpServerIP = "服务器ip";//服务器ip private string ftpUserID = "ftp的用户名" ...
- 在C#客户端用HTTP上传文件到Java服务器
在C#客户端用HTTP上传文件到Java服务器 来源:http://www.cnblogs.com/AndyDai/p/5135294.html 最近在做C / S 开发,需要在C#客户端上传文件到 ...
- .Net 上传文件到ftp服务器和下载文件
突然发现又很久没有写博客了,想起哎呦,还是写一篇博客记录一下吧,虽然自己还是那个渣渣猿. 最近在做上传文件的功能,上传到ftp文件服务器有利于管理上传文件. 前面的博客有写到layui如何上传文件,然 ...
- java 上传文件到 ftp 服务器
1. java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...
随机推荐
- BZOJ 3196 线段树套平衡树
(代码无比丑陋) //By SiriusRen #include <cstdio> #include <algorithm> using namespace std; int ...
- UltraEdit Companion Utility
UltraEdit Companion Utility 配色组件 http://www.danielwmoore.com/extras/index.php?action=downloads;sa=vi ...
- ES6特性-对比两个值是否相等
因为JavaScript中有语言缺陷,所以出了个Object.is()
- 【Uva 1601】The Morning after Halloween
[Link]: [Description] 给你一张平面图; 最多可能有3只鬼; 给出这几只鬼的初始位置; 然后,这几只鬼有各自的终点; 每秒钟,这几只鬼能同时移动到相邻的4个格子中的一个 任意两只鬼 ...
- TCP/IP协议族-----20、远程登录:TELNET与SSH
- 简单理解javascript的闭包
看过网上关于javascript的闭包的概念和分析,看完之后都是一头雾水,完全不懂,零度我本来就对于概念性的东西很烦躁,没办法,硬着头皮翻阅了很多的资料,总算理清了一点头绪,现在分享给大家,错误之处还 ...
- HTML5入门:HTML5的文档声明和基本代码
HTML5的文档声明: HTML5的文档声明,不同于HTML4.0和XHTML,它精简了许多代码,只保留<!DOCTYPE html>开头,必须位于HTML5文档的第一行,它可以用来告诉浏 ...
- 10.cocos2dx C++为Sprite添加触摸事件监听器
1.首先头文件定义事件处理的函数原型 private: bool onTouchBegan(Touch* tTouch,Event* eEvent);//手指按下事件 void onTouchMove ...
- Fragment-管理Fragment2
上一篇,给大家讲了有关Fragment管理的几个函数,即add,replace,remove,这节再讲讲其它函数,然后再给大家看一个系统BUG. 一.hide().show() 1.基本使用 这两个函 ...
- 通过一个案例彻底读懂10046 trace--字节级深入破解
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/37840583 2014.7.23晚20:30 Oracle support组猫大师分享&l ...