最近在做个项目,想尝试下 用 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 ![]() |
![]() | 11 stille 2021-01-23 11:07:52 +08:00 用 rclone 上传吧 |
![]() | 12 Winter1sComing 2021-01-23 11:56:06 +08:00 ![]() |
![]() | 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? |