最近在做个项目,想尝试下 用 web 客户端把用户 post 的视频文件直接存到 youtube 或者 onedrive.
youtube 的 api 好像不行了,现在只有 onedrive.. 但是 onedrive 怎么才能像腾讯云 cos 那样保存上去呢?
求教各路大神 给点思路~
1
favourstreet 2021-01-23 08:16:27 +08:00 via Android
onedrive 有一套 oauth 认证的 graph api,可以以分片的方式上传,api 和一般对象存储的分片上传有点不一样,但基本用法是一样的
|
2
skys215 2021-01-23 08:32:08 +08:00
“像腾讯云 cos 那样” 是指怎么样?
|
3
mm2x 2021-01-23 08:35:37 +08:00
onderive 不是有 API 的吗?可以申请啊。
|
4
zqcolor 2021-01-23 08:36:17 +08:00
'onedrive 有一套 oauth 认证的 graph api' 几年前用过,当时这个挺难用,分片部分好像我们自己实现的,不知道现在号线没有, 但是好像 app 还要注册一下,然后每次要登录一下才能用
|
6
Ranying 2021-01-23 08:43:42 +08:00
不如传到后端,然后方法就多了起来
|
7
MaiKuraki 2021-01-23 08:53:49 +08:00
|
9
Shazoo 2021-01-23 09:28:06 +08:00
用 Graphic API 。
``` 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'] ``` 上传的核心代码。是适合大文件的那种。 |
10
Shazoo 2021-01-23 09:31:37 +08:00 1
|
11
stille 2021-01-23 11:07:52 +08:00
用 rclone 上传吧
|
12
Winter1sComing 2021-01-23 11:56:06 +08:00 1
|
13
IDAEngine 2021-01-23 13:04:19 +08:00
rclone
|
15
artms OP @Winter1sComing 谢谢~
|
16
baobao1270 2021-01-25 14:55:05 +08:00 via Android
oneindex?
|