2011-10-20 30 views
0

我有一個form input type =「file」元素,它接受一個文件。當我上傳它並將其傳遞到服務器端的PHP腳本。如何在php中以字節爲單位上載文件

如何以字節爲單位寫入存儲在$ _FILES [「file」] [「tmp_name」]中的臨時文件? 下面的代碼不起作用。它似乎寫在請求的最後。如果因爲例如連接丟失,我想看看是否40%是完整的,以便我可以恢復它。

任何指針?

$target_path = "uploads/"; 
$target_path = $target_path . basename($name); 
if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) { 
     // Open temp file 
     $out = fopen($target_path, "wb"); 
     if ($out) { 
      // Read binary input stream and append it to temp file 
      $in = fopen($_FILES['file']['tmp_name'], "rb"); 

      if ($in) { 
       while ($buff = fread($in, 4096)) 
        fwrite($out, $buff); 

      } 

      fclose($in); 
      fclose($out); 

     } 
} 
+2

PHP上傳不起作用。 – ceejayoz

回答

2

直到上傳完成(或失敗)後,PHP纔會將控制權移交給文件上載目標腳本。您不必做任何事情來'接受'文件 - PHP和Apache將負責將其寫入$ _FILES數組的['tmp_name']參數中指定的文件名。

如果您嘗試恢復上傳失敗,則需要更復雜的腳本。

+1

「你需要一個更復雜的腳本」 - 他在客戶端也需要更復雜的東西。 HTML上傳只是不可恢復的。 Flash或Java中可能會有一些奇特的API hocus-pocus,但可以做到這一點。 – Boann

+0

嘿馬克,你能指導一下我需要做什麼嗎?在客戶端使用slice函數的html5?和我需要做的PHP方面? – Vidya

相關問題