深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

2024 桐庐半程马拉松
00:00:00
时间
0.00
距离(公里)
--:--
配速
--
步频
--
心率 (bpm)
--
配速
步频
|
share-image
ESC

使用Python调用又拍云表单API 上传文件

又拍云的签名计算方式,可以参考官网文档

本文主要介绍又拍云的表单上传,通过又拍云的表单 API 可以直接把本地文件上传到又拍云存储而不需要经过自己的服务器

代码


#!/usr/bin/python
# -*- coding:utf-8 -*-
import hashlib
import base64
import json
import hashlib
import datetime
import requests
import time
import json

DEFAULT_CHUNKSIZE = 8192

bucket = '' #空间名
secret = '' #表单密钥,后台找到对应服务---高级功能开启表单后复制
expiration = int(time.time())+8000 # 签名过期时间
uploadfile = '/Users/wenjun/Downloads/test.mp4' #上传文件的路径
save_key = '/{year}/{mon}/{day}/upload_{random32}{.suffix}' #在UPYUN空间的保存路径
content_type = "video/mp4" # 文件类型

# md5计算
def make_content_md5(value, chunksize=DEFAULT_CHUNKSIZE):
if hasattr(value, 'fileno'):
md5 = hashlib.md5()
for chunk in iter(lambda: value.read(chunksize), b''):
md5.update(chunk)
value.seek(0)
return md5.hexdigest()
elif isinstance(value, bytes) or (not PY3 and
isinstance(value, builtin_str)):
return hashlib.md5(value).hexdigest()
else:
raise UpYunClientException('object type error')

# 计算 policy
def make_policy(data):
policy = json.dumps(data)
return base64.b64encode(policy)

#上传
def upload():
#上传参数,此处只传了几个必须的参数,其他参考可以参考官网文档表单API 上传参数部分的表中内容
data = {'bucket': bucket,
'expiration': expiration,
'save-key': save_key,
'content-type':content_type,
'b64encoded': 'on',
}
policy = make_policy(data)
signature = make_content_md5(policy + '&' + secret) # 计算签名
print "---------计算签名完成,准备上传参数----------------"
with open(uploadfile, 'rb') as value:
value = base64.b64encode(value.read());
postdata = {'policy': policy,
'signature': signature,
'file': value,
}
print "---------准备请求参数完成,开始上传----------------"
r = requests.post("http://v0.api.upyun.com/file201503", files=postdata)
if r.status_code == 200:
print "---------文件上传成功,正在模拟是否可以访问----------------"
# 此处需要将 text 的内容转换成 json 格式,然后取出其中的 url
uploadinfo = json.loads(r.text)
headurl = "http://"+bucket+".b0.upaiyun.com"+uploadinfo["url"]
print "---------模拟访问完成,以下是访问结果----------------"
r = requests.head(headurl)
if r.status_code == 200:
print "---------文件可以访问,访问地址是:"
print headurl
elif requests == 404:
print "---------文件访问404,由于 CDN 缓存问题,您可以稍后用浏览器尝试访问,您的地址:"
print headurl

else :
print "文件上传失败"

if __name__ == "__main__":
upload()

运行结果

文章作者:阿文
文章链接: https://www.awen.me/post/371272214.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2017-07-14 17:43 发布,已超过半年(3166天),请注意甄别内容是否已过期。

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

选择联系方式

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️