微信開發之上傳素材

2021-08-02 08:39:25 字數 2768 閱讀 3740

本文目錄

上傳**素材的

上傳其他素材

關鍵的http表單請求**

小結參考文件

文中遇到諸如getaccesstoken()等關鍵函式卻沒有找到實現時,可參考前面的這兩篇文章:

1、上傳**素材的

首先選乙個簡單的介面來做說明例子,這個上傳素材的介面在所有上傳素材的介面中是引數最簡單的,而且還單獨享用乙個url, 作為入門例子再合適不過了。

官方文件:

新增永久素材

官方給的這個介面,除了需要慣例的access_token,還需要乙個檔案的引數,一般而言,只需要乙個檔案路徑,其他檔案引數通過這個路徑獲取解析則可,做成乙個黑匣子,簡單易用。

我知道,有人就是專門找下邊的requests::request()的實現的,可在這就沒看到實現,別急,下面就有。

public function uploadnewsimage($path)

$path = realpath($path);

$post = ['media '=> '@'.$path];

$url ="";

$return = $this->requestandcheck($url, 'post', $post);

if ($return === false)

return $return;

}/**

*/public function requestandcheck($url, $method = 'get', $fields = )

$wxdata = json_decode($return, true);

if (isset($wxdata['errcode']) && $wxdata['errcode'] != 0)

if (strtoupper($method) === 'get' && empty($wxdata))

return $wxdata;

}

2、上傳其他素材

懂得上面的流程,其他的上傳素材的介面,無非就是加多個getpost引數,主流程沒變。

其他相關介面列舉如下:

1、新增永久**素材:

2、新增其他型別永久素材:

3、新增臨時素材:

功能的約束和細節還望參考官方文件:

1、新增永久素材

2、新增臨時素材

3、關鍵的http表單請求**

先上**:(這裡邊已經簡化很多附加功能,比如可以改變header之類的功能,該**主要參考一些開源的專案)

public static function request($url, $method = 'get', $fields = )

curl_setopt(self::$ch, curlopt_url, $url);

if ($method != 'get')

}} elseif (defined('curlopt_safe_upload'))

}curl_setopt(self::$ch, curlopt_postfields, $fields);}}

/* 關閉https驗證 */

重點分析:

/* 支援檔案上傳 */

if (class_exists('\curlfile'))

}} elseif (defined('curlopt_safe_upload'))

這裡面有個php版本的坑,5.4版本只支援用@來進行上傳檔案,5.5是個過渡版本,支援@curlfile兩種方式上傳檔案,而到了5.6,就只支援curlfile了。所以需要用相容模式來適應不同版本。

關於為什麼不用php版本號來判斷呢?你用版本號誰知道你是要來判斷啥呢?難道加個注釋?

而常量curlopt_safe_upload是用來開啟是否支援@的,當然,5.6版本設定了也沒有。

上面的相關知識還請詳看 參考文件。

小結

如果你已有上傳檔案的介面,其實這個功能不算啥,按照官方文件進行 post url 即可。如果沒有,或者沒有實現檔案上傳功能,就要對 curl 研究一下了,還要踩一下php版本的坑。。。不過對 curl 掌握就更加全面而牢固了,這難道不是我們的目的?

主要參考文件:

2、multipart/form-data post檔案上傳詳解

3、php的curlopt_postfields引數使用陣列和字串的區別

4、the curlfile class

5、考慮 php 5.0~5.6 各版本相容性的 curl 檔案上傳

-end-

微信開發之上傳素材

上傳 素材的 上傳其他素材 關鍵的http表單請求 小結參考文件 前言 1 上傳 素材的 首先選乙個簡單的介面來做說明例子,這個上傳素材的介面在所有上傳素材的介面中是引數最簡單的,而且還單獨享用乙個url,作為入門例子再合適不過了。官方文件 新增永久素材 官方給的這個介面,除了需要慣例的access...

微信素材上傳

using system using system.collections.generic using system.io using system.linq using system.net using system.text using system.web namespace w.bll.we...

微信公眾平台開發 素材管理 上傳臨時素材

介面開放許可權 素材管理介面對所有認證的訂閱號和服務號開放。post form,需使用https 引數 是否必須 說明 access token 是 呼叫介面憑證 media 是 form data中 檔案標識,有filename filelength content type等資訊 引數 描述 m...