有没有能把 onedrive 当成 cos 用的代码
最近在做个项目,想尝试下 用 web 客户端把用户 post 的视频文件直接存到 youtube 或者 onedrive.
youtube 的 api 好像不行了,现在只有 onedrive.. 但是 onedrive 怎么才能像腾讯云 cos 那样保存上去呢?
求教各路大神 给点思路~
最近在做个项目,想尝试下 用 web 客户端把用户 post 的视频文件直接存到 youtube 或者 onedrive.
youtube 的 api 好像不行了,现在只有 onedrive.. 但是 onedrive 怎么才能像腾讯云 cos 那样保存上去呢?
求教各路大神 给点思路~
“` python
def get_upload_session_url(path, filename):
url = f”https://graph.microsoft.com/v1.0/me/drive/root:/{config[‘root_path’]}/{path}/{filename}:/createUploadSession”
payload = {
“item” : {
“@microsoft.graph.conflictBehavior”: “replace”,
“name”: filename
}
}
resp = r.post(url, headers=add_token_header({‘Content-Type’: ‘application/json’}), data=json.dumps(payload))
return json.loads(resp.content)[‘uploadUrl’]
def upload_file_body(upload_url, localfile):
f = open(localfile, ‘rb’)
data = f.read()
headers = {
‘Content-Length’:f'{len(data)}’,
‘Content-Range’: f’bytes 0-{len(data)-1}/{len(data)}’
}
resp = r.put(upload_url, data=data, headers=headers)
f.close()
return json.loads(resp.content)[‘id’]
“`
上传的核心代码。是适合大文件的那种。
Graphic API 麻烦的是认证授权部分。建议用 code 方案,最简单。
直连方案,可能需要服务器配合(因为直连链接是几次 302 和 url 替换,其中有部分不可描述了,我是用香港服务器搞定的)
1drv.ws 这个服务很不错,可是貌似有缓存,我这里出现几次跳转链接不更新了。所以还是自建比较好。