<form action="index.php" method="post" enctype='multipart/form-data' >
<input type="file" name="path" />
<input type="submit">
</form>
<?php
include 'imageUpload.php';
$tool=new imageUpload();
if(isset($_FILES["path"])&&$_FILES["path"]["error"]==UPLOAD_ERR_OK ){
$file=$_FILES["path"]["tmp_name"];
$ext=$tool->getExt($_FILES["path"]["name"]);
$svaePath="/www/znm/images/";
$result=$tool->uploadFile($file,$ext,$svaePath);
$result= json_decode($result,1);
if($result["code"]==1){
echo "上传成功,上传后的图片名称为{$result["name"]}";
}else{
echo "{$result["error"]}";
}
}else{
echo "上传失败";
}
?>
客户端上传类
<?php
/**
* Description of imageUpload
* 图片上传类
* @author Xiang dongdong<xiangdong198719@gmail.com>
*/
class imageUpload {
/**
* 默认图片服务器
* @var type
*/
private $url = "http://smallgame.com/acceptFile.php";
/**
* 图片上传图片服务器 返回图片名称
* @param type $file 要上传的文件
* @param type $ext 文件扩展名
* @param type $savePath 保存路径
* @return string 返回新的文件名 失败返回false
*/
public function uploadFile($file, $ext, $savePath) {
$fields['path'] = '@' . $file;
$fields['savePath'] = $savePath;
$fields['ext'] = $ext;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_POST, 1);
//使返回结果为字符串
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result=curl_exec($ch);
//var_dump($result);exit;
if ($error = curl_error($ch)) {
die($error);
}
curl_close($ch);
return $result;
}
/**
* 获取文件扩展名
* @param type $path
* @return type
*/
public function getExt($path) {
$info = pathinfo($path);
$ext = $info["extension"];
return $ext;
}
/**
* 判断文件是否是可上传文件
* @param type $filename
* @return boolean
*/
function isAllowUpload($filename) {
$file = fopen($filename, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);
$fileType = '';
switch ($typeCode) {
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
break;
case 8297:
$fileType = 'rar';
break;
case 8075:
$fileType = 'zip';
break;
case 255216:
$fileType = 'jpg';
break;
case 7173:
$fileType = 'gif';
break;
case 6677:
$fileType = 'bmp';
break;
case 13780:
$fileType = 'png';
break;
default:
$fileType = 'unknown: ' . $typeCode;
}
//Fix
if ($strInfo['chars1'] == '-1' AND $strInfo['chars2'] == '-40'){
$fileType='jpg';
}
if ($strInfo['chars1'] == '-119' AND $strInfo['chars2'] == '80'){
$fileType='png';
}
if(in_array($fileType, $allowUpload)){
return true;
}else{
return false;
}
}
}
服务端用户接受和移动图片
<?php
include 'imageUploadServer.php';
$server = new imageUploadServer();
if ($_FILES["path"]["error"] == UPLOAD_ERR_OK) {
$svaePath = $_POST["savePath"];
$ext = $_POST["ext"];
$result = $server->moveFile($_FILES["path"]["tmp_name"], $ext, $svaePath);
echo json_encode($result);
} else {
$result["code"] = 4;
$result["error"] = "上传服务器过程中出错!";
echo json_encode($result);
}
服务端图片处理类
<?php
/**
* Description of imageUploadServer
* 图片服务器服务端
* @author Xiang dongdong<xiangdong198719@gmail.com>
*/
class imageUploadServer {
/**
* 允许上传的文件类型
* @var type
*/
private $allowUpload=array("jpg","gif","png");
/**
* 文件移动
* @param type $file 上传的文件
* @param type $ext 文件扩展名
* @param type $svaePath 文件保存目录
* @return int
*/
public function moveFile($file,$ext, $svaePath) {
if($this->isAllowUpload($file)){
$name = md5($this->getRoundNumber() . time()) . "." . $ext;
//move_uploaded_file($_FILES["path"]["tmp_name"], "{$svaePath}{$name}");
if(move_uploaded_file($_FILES["path"]["tmp_name"], "{$svaePath}{$name}")){
$result["code"]=1;
$result["name"]=$name;
}else{
$result["code"]=2;
$result["error"]="移动文件失败!";
}
}else{
$result["code"]=3;
$result["error"]="上传的文件类型非法";
}
return $result;
}
/**
* 生成6位随机字符串
* @return string
*/
private function getRoundNumber() {
$randStr = str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890');
$rand = substr($randStr, 0, 6);
return $rand;
}
/**
* 判断文件是否是可上传文件
* @param type $filename
* @return boolean
*/
function isAllowUpload($filename) {
$file = fopen($filename, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);
$fileType = '';
switch ($typeCode) {
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
break;
case 8297:
$fileType = 'rar';
break;
case 8075:
$fileType = 'zip';
break;
case 255216:
$fileType = 'jpg';
break;
case 7173:
$fileType = 'gif';
break;
case 6677:
$fileType = 'bmp';
break;
case 13780:
$fileType = 'png';
break;
default:
$fileType = 'unknown: ' . $typeCode;
}
//Fix
if ($strInfo['chars1'] == '-1' AND $strInfo['chars2'] == '-40') {
$fileType = 'jpg';
}
if ($strInfo['chars1'] == '-119' AND $strInfo['chars2'] == '80') {
$fileType = 'png';
}
if (in_array($fileType, $this->allowUpload)) {
return true;
} else {
return false;
}
}
/**
* 获取文件扩展名
* @param type $path
* @return type
*/
public function getExt($path) {
$info = pathinfo($path);
$ext = $info["extension"];
return $ext;
}
}