MyCurlFile.php
1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
namespace WeChat\Contracts;
/**
* 自定义CURL文件类
* Class MyCurlFile
* @package WeChat\Contracts
*/
class MyCurlFile extends \stdClass
{
/**
* 当前数据类型
* @var string
*/
public $datatype = 'MY_CURL_FILE';
/**
* MyCurlFile constructor.
* @param string|array $filename
* @param string $mimetype
* @param string $postname
* @throws \WeChat\Exceptions\LocalCacheException
*/
public function __construct($filename, $mimetype = '', $postname = '')
{
if (is_array($filename)) {
foreach ($filename as $k => $v) $this->{$k} = $v;
} else {
$this->mimetype = $mimetype;
$this->postname = $postname;
$this->extension = pathinfo($filename, PATHINFO_EXTENSION);
if (empty($this->extension)) $this->extension = 'tmp';
if (empty($this->mimetype)) $this->mimetype = Tools::getExtMine($this->extension);
if (empty($this->postname)) $this->postname = pathinfo($filename, PATHINFO_BASENAME);
$this->content = base64_encode(file_get_contents($filename));
$this->tempname = md5($this->content) . ".{$this->extension}";
}
}
/**
* 获取文件信息
* @return \CURLFile|string
* @throws \WeChat\Exceptions\LocalCacheException
*/
public function get()
{
$this->filename = Tools::pushFile($this->tempname, base64_decode($this->content));
if (class_exists('CURLFile')) {
return new \CURLFile($this->filename, $this->mimetype, $this->postname);
}
return "@{$this->tempname};filename={$this->postname};type={$this->mimetype}";
}
/**
* 类销毁处理
*/
public function __destruct()
{
// Tools::delCache($this->tempname);
}
}