我試圖使用Webclient
將我的Monotouch
應用程序(運行於iPad
)上的二進制文件(照片)同步到我們的PHP
服務器(Windows)。正在發送和接收文件,但二進制文件似乎在服務器上已損壞,無法查看。WebClient UploadFile破壞二進制數據
下面是客戶端代碼:
static void UploadPhotos()
{
WebClient client = new WebClient();
client.Headers.Add("Content-Type","application/octet-stream");
string sUri = GetUri();
client.UploadFile (sUri, "POST", "images/test.png");
}
這裏是PHP
代碼在服務器上:
<?php
$uploadDir = "C:\\uploaddir\\";
foreach ($_FILES as $file_name => $file_array) {
$uploadFile = $uploadDir . $file_array['name'];
move_uploaded_file($file_array['tmp_name'], $uploadFile);
}
?>
有誰知道爲什麼二進制數據獲取上傳和損壞如何修理它?
更新:
非常奇怪了。看起來我遇到的問題隻影響png
圖像; jpeg
圖像似乎正確。 jpeg
圖像在服務器上的Windows資源管理器中正確顯示圖像尺寸,我可以預覽jpeg
圖像。我測試的jpeg
圖像大約是90 KB。雖然png
文件沒有正確顯示。在Windows資源管理器中,png
文件不顯示圖像的尺寸,無法預覽。服務器上的png
文件大小較大。因此,舉例來說,我使用以下png
圖像:
http://tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png
初始文件是40.2 KB(41236個字節);傳輸後服務器上的文件大小爲45.3 KB(46468字節)。任何人有任何想法如何發生?
執行文件大小是否匹配?你有沒有嘗試使用相同的代碼從一個簡單的Windows客戶端上傳?這將有助於確定問題是客戶端還是服務器。您還應該嘗試上傳一個小文本文件 - 是否有可能導致問題的服務器上的文件大小限制? – Jason 2012-08-03 23:29:25