curl文件上传类

<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<[email protected]>
*/
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<[email protected]>
*/
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;
     }
}
时间: 2024-12-28 16:13:01

curl文件上传类的相关文章

php curl文件上传兼容php5.0~5.6各版本

PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求. 传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传.这与命令行直接调用cURL程序的语法是一致的: 1 curl_setopt(ch, CURL

[PHP] CURL文件上传

一.说明 本文主要简述CURL进行文件上传的一般操作,基于TP5框架: 二.前端 代码如下,需要填入对应的上传地址还有修改接收的参数名字(这里是 file): <form action="上传地址" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <button type=

ajax结合文件上传类进行多文件的单个上传

今天做项目的时候碰见一个问题:之前一个同事离职之前做了一个网站,有一个上传商品详细图片的功能,当时已经完成,但是由于后期程序的有更改以及更改的程序员的水平也是参差不齐,最后导致程序bug很多,由于当时用的是一个框架,最终也没找到说明文档,后来我就重新写了一个结合ajax上传文件的upload.classs.php虽然界面欠缺美观,但是通俗易懂好维护. //首先是页面. index.php <!DOCTYPE html> <html lang="en"> <

面向对象中的文件上传类

<?php /** *文件上传类 * **/ class Upload { //上传到哪个目录 protected $path = './upload/'; //准许的MIME protected $allowmime = ['image/png','image/jpg','image/jpeg','image/pjpeg','image/bmp','image/wbmp','image/gif','image/x-png']; //准许的后缀 protected $allowsubfix = 

PHP文件上传类(页面和调用部分)

<!--upform.html内容--> <form action="upload.php" method="post" enctype="multipart/form-data" > name: <input type="text" name="username" value="" /><br> <input type="

文件上传类

<?php /** file: fileupload.class.php 文件上传类FileUpload 本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */ class FileUpload { private $path = "./uploads"; //上传文件保存的路径 private $allowtype = array('jpg','gif','png'); //设置限制上传文件的类型 private $maxsize = 1000000;

PHP文件上传类

<form action="upload.php" method="post" enctype="multipart/form-data" > name: <input type="text" name="username" value="" /><br> <input type="hidden" name="MAX

php 文件上传类

<?php /** file: fileupload.class.php 文件上传类FileUpload 本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */ class FileUpload { private $path = "./uploads"; //上传文件保存的路径 private $allowtype = array('jpg','gif','png'); //设置限制上传文件的类型 private $maxsize = 1000000;

PHP基础------文件上传类

<?php //文件上传类 $upImage = $_FILES["img"]; //Array //( // [name] => gou.jpg // [type] => image/jpeg // [tmp_name] => D:\wamp\tmp\php311F.tmp // [error] => 0 // [size] => 9488 //) class upLoad{ private $_arr; //构造函数,把图像信息赋值给$_arr字