云开发[1]是目前不少人在开发小程序时的选择,随着业务的增长,开发者也开始追求在更多的平台使用云开发。
今天,我们来看一看,如何在网页中直接使用云开发[2]的 HTTP API 上传文件。
业务流程说明
由于云开发的存储使用的是腾讯云的对象存储 COS[3],因此,在上传时,存在一个上传流程的问题。具体的上传流程我绘制了一个时序图,你可以通过这个时序图来了解具体的上传流程。
具体实现
接下来我们来实现一下具体的上传步骤,主要来说,有以下三步:请求微信的接口,获取到 AccessToken[4]
使用 AccessToken 接口,换取 COS 上传参数[5]
使用 COS 的 API 接口上传文件[6]
1. 获取 Access Token
首先,我们需要获取 Access Token,这里我们需要用到微信官方文档的 getAccessToken 这个接口,已经小程序的 AppID 和 Secret 。 Appid 和 Secret 可以在小程序后台的开发设置中获取,这里不再赘述。
由于 Access Token 不允许在前端进行获取,需要大家根据自己的语言编写代码获取 Token ,并发送到前端。这里我给几个常见语言的例子
Java
你需要将下方的 APPID 和 SECRET 替换为你自己的 APPID 和 SECRET
import java.io.IOException;
import org.apache.http.client.fluent.*;
public class SendRequest
{
public static void main(String[] args) {
sendRequest();
}
private static void sendRequest() {
// 获取 Code (GET )
try {
// Create request
Content content = Request.Get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET")
// Fetch request and return content
.execute().returnContent();
// Print content
System.out.println(content);
}
catch (IOException e) { System.out.println(e); }
}
}
PHP
你需要将下方的 APPID 和 SECRET 替换为你自己的 APPID 和 SECRET
// get cURL resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET');
// set method
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
// return the transfer as a string
cu