使用微博圖床,簡單上傳圖片返回外鏈
平時markdown用的頻繁,當然需要一個簡單好用的獲得圖片外鏈的方法。於是自己動手做了這個。
在我的網站上運行,先上圖。

首先申請個新浪微應用,授權獲得auth2_token,后台實現上傳圖片后轉發到微博,獲得外鏈。
接收文件 view.py
@app.route("/xxxxxxx", methods=["GET", "POST"])
def xxxxxxxxx():
t1 = [0,]
if request.method == 'POST':
t1[0] = 1
f = request.files['file']
pic_path='/s/jay/%s'%f.filename
bkt.put_object(f.filename, f)
t1.append(weibo.uploadpic(pic_path))
else:
t1.append('none')
return render_template('uploadpic.html',t=t1)
weibo.uploadpic(pic_path)
def uploadpic(pic_path):
s=session()
wb_url = 'https://api.weibo.com/2/statuses/share.json'
wb_content=pic_path+" 填充"
d2 = {"access_token":"填充",
"status": wb_content }
files={"pic":open(pic_path,"rb") }
rs = s.post(wb_url,data=d2,files=files)
return str(rs.json()['original_pic'])
uploadpic.html
{% extends 'base.html' %}
{% block page %}
<h2>微博圖床,圖片外鏈</h2>
<div class="am-u-lg-12 am-u-md-12 am-u-sm-12">
<form class="am-form" action="" method="POST" enctype="multipart/form-data">
<label for="message" class="about-color">上傳文件:</label>
<br><input id="File1" type="file" name="file"/>
<br>
<button type="submit" class="am-btn am-btn-primary am-btn-sm">
<i class="am-icon-check"></i> 上傳</button>
</form>
</div>
<p>文件上傳至微博賬號 <a href="填充" target="_blank">填充</a></p>
<p>鏈接中已知可變參數:large thumbnail(縮略圖) small </p>
{% if t[0] %}
<p>圖片上傳成功! </p>
<script type="text/javascript">
function copyUrl2(){
var Url2=document.getElementById("biao1");
Url2.select(); // 選擇對象
document.execCommand("Copy");
}
</script>
<textarea cols="60" rows="2" id="biao1">{{t[1]}}</textarea>
<input type="button" onClick="copyUrl2()" value="點擊復制" />
{% endif %}
{% endblock %}
其他
- 這個網頁鏈接是私密的。站點訪問量也極少,因此不用鑒權也很安全。
- 關於其他 url 參數,試過新浪雲存儲的圖片參數,並不支持。可能通過微博生成的圖片外鏈只有這幾(large/small)參數可選。
- sae 屏蔽的python sdk 已知的有:sqlite3/qiniu
