...
最近刚写完一个cocos2dx,从客户端上传到php 服务器 的 简单 测试程序,代码可以复制直接运行 在阅读代码前最好可以先花点时间了解一点php 和libcurl的相关知识,并不会花费太长时间,由于我做的时候对php不是特别熟悉,所有使用libcurl拼凑表单的时候出现一
最近刚写完一个cocos2dx,从客户端上传到php服务器的简单测试程序,代码可以复制直接运行
在阅读代码前最好可以先花点时间了解一点php 和libcurl的相关知识,并不会花费太长时间,由于我做的时候对php不是特别熟悉,所有使用libcurl拼凑表单的时候出现一个问题,花了我一阵时间去解决。下方代码只是简单的demo,代码有些粗糙,但对于大家的理解应该影响不大
我使用XAMMP中的Apache服务器,php脚本放在\xampp\htdocs\目录下,并在当前目录创建upload文件夹用来存放上传的文件
1:
ReceiveFile.php
文件的类型 */
$type=array("rar","zip","txt","c","JPG");
/* 获取上传文件信息 */
// $upfile=&$HTTP_POST_FILES['file'];
$upfile=$_FILES["file"];
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";
/* 获取文件后缀名函数 */
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//echo "Temp file: " . fileext($upfile['name'] . "
";
/* 判断上传文件类型 */
if( !in_array( strtolower( fileext($upfile['name'] ) ),$type) )
{
$text=implode(",",$type);
echo "对不起,您只能上传以下类型文件: ",$text,"
";
}
else
{
/* 设置文件名为"日期_文件名" */
$dest=$dest_dir.'/'.date("ymdHis")."_".$upfile['name'];
/* 移动上传文件到指定文件夹 */
$state=move_uploaded_file($upfile['tmp_name'],$dest);
if ($state)
{
print("文件上传成功!
");
print("文件名:".$dest."
");
print("上传的文件大小:".( round($upfile['size'] / 1024,2) )." KB
");
}
else
{
/* 处理错误信息 */
switch($upfile['error'])
{
case 1 : die("上传文件大小超出 php.ini:upload_max_filesize 限制
");
case 2 : die("上传文件大小超出 MAX_FILE_SIZE 限制
");
case 3 : die("文件仅被部分上传
");
case 4 : die("没有文件被上传
");
case 5 : die("找不到临时文件夹
");
case 6 : die("文件写入失败
");
}
}
}
?>
2:
upload.html 表单:
可以直接运行upload.html,如http://127.0.0.1/WD/upload.html
则会出现页面,选择相应的文件上传则会提示
注:php页面会有上传大小超过1M的限制
3:
接下来就要最重要的部分了,使用libcurl库来实现upload.html表单,实现上传功能
Httpupload.h
#ifndef COMMON_LINUX_HTTP_UPLOAD_H__
#define COMMON_LINUX_HTTP_UPLOAD_H__
#include