2014-08-28 58 views
1

美好的一天。有人可以幫助我嗎?我的任務是創建一個將圖像發送到php(服務器端)的python腳本(客戶端)。Python腳本發送圖像到PHP

注意:python腳本運行在不同的樹莓派中,並且php服務器只通過互聯網接收圖像。

成就:我現在可以從我的客戶端發送文本數據到服務器。

問題:我最大的問題是如何發送圖像?

任何意見和建議,非常感謝。謝謝。

我的Python腳本:

import urllib2 
from urllib import urlencode 

# 192.168.5.149 is the ip address of server 
url = "http://192.168.5.149/server/server.php" 
data = {'test':'OK'} 

encoded_data = urlencode(data) 

website = urllib2.urlopen(url, encoded_data) 
print website.read() 

我的PHP腳本:

<?php 
echo $_POST['test']; 
?> 

當我運行python腳本,我得到了 「OK」 由PHP服務器發送。這意味着,連接成功。

EDITED

Python客戶端:

import requests 
url = 'http://messi-fan.org/post' 
files = {'file': open('image.png', 'rb')} 
r = requests.post(url, files=files) 

PHP服務器:

<?php 
$file_path = "C:\\xampp\htdocs\server\php\\"; 

$file_path = $file_path.basename($_FILES['file']['name']); 
?> 
+0

希望這有助於[鏈接](http://stackoverflow.com/questions/11551268/python-post-request-with-image文件) – 2014-08-28 08:32:53

回答

6

您可以使用請求模塊這一點。它是非常容易使用

import requests 
url = 'http://messi-fan.org/post' 
files = {'file': open('image.png', 'rb')} 
r = requests.post(url, files=files) 

和PHP

<?php 
print_r($_FILES); 
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]); 
+0

請求是一個比urllib好得多的庫,但它不是Python的標準庫的一部分,必須使用pip或系統的包管理器單獨安裝。如果這不是一個選項,那麼'website = urllib2.urlopen(url,urlencode(files))'也可以。 – 2014-08-28 08:46:14

+0

謝謝你的時間。在你的建議代碼中,「&_FILES」是什麼意思?這是圖像嗎?我如何將圖像保存到我的本地目錄?例如:$ file_path =「C:\\ xampp \ htdocs \ server \ php \\」; – 2014-08-28 09:17:01

+0

$ _FILES變量包含上傳的圖像文件。您可以將上傳的文件保存在服務器的任何位置 – 2014-08-28 10:01:59