我正在寻找absolute minimal
将文件上传到存储桶的要求。以及所需的最少代码。
我拥有的最小 oAuth/API 密钥信息来自console.cloud.google.com/apis/credentials/oauthclient/
clientId
:来自凭据页面的客户端 ID。apiKey
:来自凭证页面的客户端密码?scopes
: ' https://www.googleapis.com/auth/devstorage.read_write ' (为什么叫它devstorage
?好像它只适用于开发者?还是它的缩写device
?
我不确定 apiKey 是否正确,但是从示例中使用它不会引发错误:
// This is triggered after the `client.js` loads
function handleClientLoad() {
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
}
所以,这是第一步,但如果我错了,请纠正我。
现在处理 Auth Result:
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
makeApiCall();
}
}
在这里我有点卡住了,我正在研究一个例子:https ://developers.google.com/api-client-library/javascript/start/start-js
当它到达时它停止工作gapi.client.plus.people
,其中people
未定义。这是因为我有一个匿名用户,并且有一个公共 API 密钥。稍后我将实现每个用户的 ACL,但现在我只需要它来工作/上传。
现在,我在 Amazon Cloud 上做了类似的工作,有一个简单的基于 jQuery 的小部件,可以上传文件,我只需要输入它们API-key
和存储桶的名称(很PHP
遗憾)。
我会很高兴只使用一个简单的<form>
,但是我遇到的示例中的信息/字段比上述 3 个最小数据(clientId、apiKey、范围)和存储桶的附加 url(如奇怪的加密 acl 字符串)要多得多
我知道这bucket-name.storage.googleapis.com
是文件的最终位置,并且在我手动上传图像时有效。
我现在正在寻找绝对最小的代码,最好是javascript,使用类似的google client
东西(我在另一个例子中找到):
gapi.client.request({
'path': '/upload/storage/' + API_VERSION + '/b/' + BUCKET + '/o',
'method': 'POST',
'params': {'uploadType': 'media'}
'headers': {
'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
}
我需要API_VERSION
吗?我如何找出path
使用哪个?我知道我的bucket
名字,但upload/storage/
从哪里来?和/b/
?(尽管https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload表明我需要它)该示例使用带有 a 的标头,boundary
但我找不到任何相关信息,我可能也不需要那个。问题是我找不到任何minimally
必需的标题。我遇到了'x-goog-acl': 'public-read'
,这需要在标题中吗?
总结一下,我想回答的问题:
- 我至少需要将哪些标头上传到
allUsers
访问权限设置为的存储桶Owner
(我知道,这不是最好的主意,这将在未来改变) - 如何从
html
表单中获取文件的任何示例代码,或者用于ajax
发送请求,或者使用gapi
,我认为这是为了做到这一点。
我希望我的问题很清楚,我基本上不知道从哪里开始/找到正确的代码示例。尽管这可能与 google javascript 客户端 api 位于beta
..