2013-02-22 29 views
0

我有一個統一的C#程序,它正在上傳一個二進制文件(有一些數據)。 (這是一種irrelvant但也許不是)

var form = new WWWForm(); 
form.AddField("docid", "A");    
byte[] textarr = Encoding.ASCII.GetBytes("just a sample text to be compressed and sent to server"); 
form.AddBinaryData("file", textarr,"file.tmp");     
string req = "my url";   
WWW www = new WWW(req,form); 

我想借此文件內容(二進制),這樣我就可以發送到數據庫中binari在PHP端。

我試圖做這樣的事情:

$binaridata = ~$_FILES["file"]["name"] (what do i need to do here? tried 

file_get_content等,但它總是產生一些錯誤)

感謝您的幫助!

回答

2
$binaryData = file_get_contents($_FILES['file']['tmp_name']); 
               ^^^^^^^^ 

文件被存儲在由tmp_name指示的路徑,name只是由客戶指定的名稱並且幾乎無關緊要。

取決於你如何與數據庫交談以及使用什麼數據庫,你不要想將整個文件內容讀入一個變量。例如,通過使用PDO的Postgres,你可以這樣做:

$stmt = $pdo->prepare('INSERT INTO ... VALUES (:file)'); 

$fh = fopen($_FILES['file']['tmp_name'], 'rb'); 
$stmt->bindParam(':file', $fh, PDO::PARAM_LOB); 

$stmt->execute(); 

數據庫適配器將讀取該文件作爲流,這比其保存到內存更經濟。請查閱您的數據庫適配器手冊。

+0

$ binaryData = file_get_contents($ _ FILES ['file'] ['tmp_name']);是的,這工作正常,其中我需要感謝。 – yaron 2013-02-24 16:45:42

-1

爲什麼不嘗試
$binaridata = $_FILES["file"]["name"];
添加分號並刪除〜
Shadowpat

相關問題