此处以上传图片示范。
.h文件:
#pragma once
#include "cocos2d.h"
using namespace cocos2d;
using namespace std;
class uploadPhoto : public CCObject
{
public:
static uploadPhoto *m_inst;
static uploadPhoto *GetInst();
void UpLoadFile(string photoPath);
static size_t write_data(uint8_t *dataBack, size_t size, size_t nmemb, void *userp);
};
.cpp文件:
#include "uploadPhoto.h"
#include "curl.h"
uploadPhoto* uploadPhoto::m_inst = NULL;
uploadPhoto* uploadPhoto::GetInst()
{
if (!m_inst)
{
m_inst = new uploadPhoto();
return m_inst;
}
return NULL;
}
void uploadPhoto::UpLoadFile(string photoPath)
{
CCLOG("IN uploadFile::UpLoadFile(");
CURLcode cURLcode;
CURL *cURL;
//Init
cURLcode = curl_global_init(CURL_GLOBAL_SSL);
if (CURLE_OK != cURLcode)
{
curl_global_cleanup();
return;
}
cURL = curl_easy_init();
if (!cURL)
{
curl_easy_cleanup(cURL);
curl_global_cleanup();
return;
}
curl_httppost *post = NULL;
curl_httppost *last = NULL;
//上传的文件的全路径并指定类型
curl_formadd(&post, &last, CURLFORM_COPYNAME, "photo",
CURLFORM_FILE, photoPath.c_str(),
CURLFORM_CONTENTTYPE, "Image/png", CURLFORM_END);
设置多个参数
//curl_formadd(&post, &last,CURLFORM_COPYNAME,"username",
// CURLFORM_COPYCONTENTS,"你好",CURLFORM_END);
curl_easy_setopt(cURL, CURLOPT_URL, "http://123.456.789/floder/movePhoto.php");
curl_easy_setopt(cURL, CURLOPT_TIMEOUT, 10);//超时时间10秒
curl_easy_setopt(cURL, CURLOPT_HTTPPOST, post);//请求方式POST
curl_easy_setopt(cURL, CURLOPT_WRITEFUNCTION, write_data); //设置回调
curl_easy_setopt(cURL, CURLOPT_VERBOSE, 1); //非零值表示你想CURL报告每一件意外的事情
curl_easy_perform(cURL);
curl_easy_cleanup(cURL);
curl_global_cleanup();
}
size_t uploadPhoto::write_data(uint8_t *dataBack, size_t size, size_t nmemb, void *user_p)
{
string szData = string((char*)dataBack); //返回的结果
return 0;
}
.php:
<?php
/* 设定上传目录 */
$dest_dir='./userHead';
/* 检测上传目录是否存在 */
if( !is_dir($dest_dir) || !is_writeable($dest_dir) )
{
die("上传目录 ".$dest_dir." 不存在或无法写入");
}
/* 获取上传文件信息 */
$upfile=&$HTTP_POST_FILES['photo'];
$upfile=$_FILES["photo"];
$dest=$dest_dir.'/'.$upfile['name'];
$state=move_uploaded_file($upfile['tmp_name'],$dest);
if ($state)
{
print("文件上传成功!<br>");
print("文件名:".$dest."<br>");
print("上传的文件大小:".( round($upfile['size'] / 1024,2) )." KB<br>");
}
else
{
/* 处理错误信息 */
switch($upfile['error'])
{
case 1 : die("上传文件大小超出 php.ini:upload_max_filesize 限制<br>");
case 2 : die("上传文件大小超出 MAX_FILE_SIZE 限制<br>");
case 3 : die("文件仅被部分上传<br>");
case 4 : die("没有文件被上传<br>");
case 5 : die("找不到临时文件夹<br>");
case 6 : die("文件写入失败<br>");
}
}
?>