2015-05-06 47 views
1

我想要使用請求模塊(Python 3)上傳圖像。可悲的是,服務器回答我的請求時出現錯誤,說我應該只上傳jpg,png或gif類型的文件。 我想我應該填寫表格的每個字段,但我想弄清楚如何儘管我所有的測試。如何使用請求指定表單域和文件類型

下面是HTML表單:

<form class="upload" enctype="multipart/form-data" action="?action=upload" method="post"> 
      <h3>Envoyez votre image !</h3> 
    <input name="MAX_FILE_SIZE" value="15360000" type="hidden" /> 
    <input name="img" size="30" type="file" /> 
    <input value="Envoyer" type="submit" /> 
</form> 

我用這個Python代碼:

with open(image, 'rb') as img: 
    toup = {'img': (os.path.basename(image), img)} 
    res= requests.post('http://url/?action=upload', files = toup) 

我怎樣才能填補MAX_FILE_SIZE場,並指定上傳文件的類型?

+0

你確定你正在嘗試上傳的文件是JPG,PNG或GIF嗎? 你可以提供更多的代碼,也許是一個運行示例? –

+0

是的,我敢肯定這是一個JPG格式:) –

回答

1

您可以將文件set the mime type

toup = {'img': (os.path.basename(image), img, 'image/jpeg')} 

要獲取文件的確切MIME,您可以使用mimetypes庫。

+0

這就是我正在尋找的,如何指定mimetype。有用!非常感謝。 –

0

MAX_FILE_SIZE似乎是一個正常的HTTP POST數據:

with open(image, 'rb') as img: 
    toup = {'img': (os.path.basename(image), img)} 
    res= requests.post('http://url/?action=upload', files = toup, data={'MAX_FILE_SIZE': '15360000'}) 
+0

它也不工作。我沒有關於文件類型的答案。如果有人想嘗試,那是http://pix.toile-libre.org: 'res = requests.post('http://pix.toile-libre.orgl/?action = upload',files = toup,data = {'MAX_FILE_SIZE':'15360000'})' –

相關問題