2015-11-18 112 views
-1

如何設置請求標頭?我正在從instagram下載圖像,我想更改文件名,獲取文件大小。這些許多請求頭在那裏wiki如何更改請求標頭

這是我到現在爲止

import requests 
@app.route('/try') 
def trial(): 
    img = 'https://igcdn-photos-e-a.akamaihd.net//hphotos-ak-xaf1//t51.2885-15//e35//12093691_1082288621781484_1524190206_n.jpg' 
    imgData = requests.get(img) 
    return imgData  # this gives me error: Response object is not callable 

編輯做:我想設置的內容處置頭。另一個問題:當我設置標題時,如何將圖像提供給客戶端?

我在互聯網上閱讀,發送文件到客戶端我應該設置請求標題。但我如何發送文件是我的另一個問題?對不起,提問同一個問題

+1

你需要在你的問題上更清楚;你的示例代碼缺少Flask請求處理程序('@ app.route()'裝飾器加上相應的函數)。在你的問題描述中要*完整*:我試圖用'requests'下載一個圖像,然後用Flask *提供它,然後包含一個最小化的Flask應用程序來展示你得到了多少。 –

回答

1

您詢問的查詢與Flask無關。 Flask是一個Web框架。請求是一個HTTP庫,這將有助於解決您的問題

您只需要創建一個字典與您的標題(鍵:值對,其中的關鍵是標題的名稱和價值,好吧,價值對),並將該字典傳遞給.get.post方法中的標題參數。

headers = {'Content-Type': 'text/plain'} 
r = requests.get('http://example.com', headers=headers) 

如果您要檢查的標頭值時,設置發送請求,那麼你可以簡單的做到這一點:

print r.headers 
print r.headers['Content-Type'] # Output - 'text/html' 
+0

請注意,請求標頭不會告訴你有關響應文件大小或文件名的任何信息。 –

+0

@MartijnPieters - 你說得對。 OP的問題不清楚。但檢查編輯的問題。特別是最後一行。 – JRodDynamite

+0

很明顯,他想要'文件名'和'文件大小',並根據我的回答OP編輯這樣的... –

0
resp = requests.get('https://igcdn-photos-e-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-15/e35/12093691_1082288621781484_1524190206_n.jpg') 

resp.headers 

,你會得到這樣的迴應..

{'content-length': '73921', 'last-modified': 'Fri, 30 Oct 2015 15:18:29 GMT', 'connection': 'keep-alive', 'cache-control': 'max-age=1209600', 'date': 'Wed, 18 Nov 2015 08:44:15 GMT', 'access-control-allow-origin': '*', 'content-type': 'image/jpeg', 'timing-allow-origin': '*'} 

你可以得到標題...檢查出content-length。你不會得到我相信的文件名,因爲content-disposition不會在那裏。因此,請嘗試其他方法來獲取文件名。

+0

感謝您的即時回覆。我可以設置「content-disposition」標題嗎? – sap

+0

@sap我認爲我們不能那麼做...因爲它可能是instagram,也許 –

+0

@sap,但你可以得到文件名..它在URL中...對嗎? –