2013-03-15 17 views
1

我使用webclientHttpWebRequest發送client(C#)的文件。我想知道如何接收PHP(Server)中的客戶端發送的文件。 我檢查了$_POST,其空。如何從PHP中的http post發送文件(即文本文件)?

客戶端代碼(C#):

using (WebClient client = new WebClient()) 
{ 
client.UploadFile("http://path/file.php","POST",@"Data.txt"); 
} 
+1

試試看[this](http://www.tech-juice.org/2011/02/11/upload-a-file-with-c-to-a-php-page/),看看是否我會幫你的。你不會顯示你的代碼得到什麼錯誤,所以沒有它,調試它是不可能的。 ^^ – Jon 2013-03-15 07:56:32

+0

感謝您的鏈接..(它解決了我的問題)(我剛剛得到'權限被拒絕'錯誤。這也是因爲缺乏服務器路徑的權限) – Tirumudi 2013-03-15 08:06:58

+0

不客氣^^權限被拒絕錯誤 - 是來自C#還是PHP返回?如果來自PHP,請確保它具有對您要寫入的目錄(或文件,如果要覆蓋它)的寫入權限。 – Jon 2013-03-15 08:54:21

回答

4

是,$_POST將是空的,你應該檢查$_FILES變量上傳的文件: 這裏是快速片段:

<?php 
$uploaddir = "uploads/"; 
$uploadfile = $uploaddir . basename($_FILES['file']['name']); 

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) 
{ 
    echo "The file has been uploaded successfully"; 
} 
else 
{ 
    echo "There was an error uploading the file"; 
} 
?> 

內容上面的腳本中的$ _FILES如下。

$ _FILES ['file'] ['name']客戶機上文件的原始名稱。

$ _FILES ['file'] ['type']該文件的MIME類型,如果瀏覽器提供了該信息。一個例子就是「image/gif」。

$ _FILES ['file'] ['size']上傳文件的大小(以字節爲單位)。

$ _FILES ['file'] ['tmp_name']上傳文件存儲在服務器上的臨時文件名。

$ _FILES [ '文件'] [ '錯誤']自PHP 4.2.0,PHP返回一個適當的在與文件陣列沿錯誤代碼

  • UPLOAD_ERR_OK - 值:0;沒有錯誤,文件上傳與 成功。
  • UPLOAD_ERR_INI_SIZE值:1;上傳的文件超過php.ini中的 upload_max_filesize指令。
  • UPLOAD_ERR_FORM_SIZE值:2;上傳的文件超出了HTML表單中指定的 MAX_FILE_SIZE指令。
  • UPLOAD_ERR_PARTIAL值:3;上傳的文件僅部分上傳了 。
  • UPLOAD_ERR_NO_FILE值:4;沒有文件上傳。

上載的文件將默認存儲在服務器的默認臨時目錄。變量$ _FILES ['file'] ['tmp_name']將保存有關其存儲位置的信息。該move_uploaded_file功能需要被用來上傳的文件存儲到正確的位置

+2

我想確保注意到,如果你使用這個,你要確保你檢查文件類型和服務器端的所有好東西,以確保沒有人上傳任何惡意的東西。 (即使你檢查它的客戶端,任何東西都可以POST到後端^^) – Jon 2013-03-15 07:33:54

+0

Thanks.But,它沒有上傳。我現在也添加了我的客戶端代碼。 – Tirumudi 2013-03-15 07:48:50

+1

您是否在服務器端嘗試過** var_dump($ _ FILES); **? – Lixas 2013-03-15 07:55:56

2

你應該使用下面的代碼作爲您的參考:

if(isset($_FILES['file']['name']) && !empty($_FILES['file']['name'])) 
    { 
    $name=$_FILES['file']['name']; 

    $size=$_FILES['file']['size']; 
    $type=$_FILES['file']['type']; 
    $tmp_name=$_FILES['file']['tmp_name']; 
    $error=$_FILES['file']['error']; 
    $maxsize ="Your size limit"; 
    $location='Your location to upload file'; 

    // perform any security check operation here.... and then 

    if($size <= maxsize) 
    { 
    if(move_uploaded_file($tmp_name, $location.$name)) 
     { 
      // perform your operation down here 
     } 
    } 

    } 

注: - $ _FILES [「文件」 ]此行文件中的['name']代表表單文件字段的名稱。