cocos2dx上传文件至php服务器操作

此处以上传图片示范。

.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>");
        }
    }
 
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值