2012-02-01 140 views
13

我在PhP腳本中使用純文本文件。 有沒有辦法在本地保存PhP腳本的情況下處理文件?我看到的任何地方只是上傳文件並保存。我只需要從文件中拉出一些名字並完成它。 如果我使用文件的本地副本,那麼我有其他所有工作,所以保存它,然後刪除它的作品。我只是想知道是否有辦法跳過保存副本並直接獲取該信息。php文件上傳不保存

我們在這裏上傳文件。

<html> 
<body> 
    <form action="test.php" method="post" enctype="multipart/form-data"> 
     <label for="file">Filename:</label><input type="file" name="file" id="file" /> <br /> 
     <input type="submit" name="submit" value="Submit" /> 
    </form> 
</body> 
</html> 

,並在劇本與本地保存的文件的副本的工作,我只是使用

$file = fopen($_FILES['file']['name'], "r"); 

回答

14

如果它的文本文件(假設大小不是很大),通常你可以通過

$contents= file_get_contents($_FILES['file']['tmp_name']); 

讀它。如果你不知道它是哪種類型的上傳,檢查申請方法

if(strtolower($_SERVER['REQUEST_METHOD'])=='post') 
    $contents= file_get_contents($_FILES['file']['tmp_name']); 
elseif(strtolower($_SERVER['REQUEST_METHOD'])=='put') 
    $contents= file_get_contents("php://input"); 
else 
    $contents=""; 
+3

條件看起來相同,我想你第二次意味着strtolower($ _ SERVER ['REQUEST_METHOD'])=='把' – netadictos 2014-11-07 13:01:22

0

沒有它必須被保存到被AFAIK閱讀,我的正常程序是一樣的你的,上傳,閱讀和刪除。

0

您可以使用$_FILES["file"]["tmp_name"]這將是上傳的臨時文件。腳本運行完畢後,PHP甚至應該自行清理並刪除臨時文件。

3

表單提交時,請檢查$_FILES['input_name']['tmp_name']屬性。這是保存在臨時/tmp系統路徑中的文件的路徑。您可以繼續使用例如file_get_contents()讀取該名稱,然後簡單地忘記該文件。系統將負責移除它。


只是站出來其他的答案,理論上可以閱讀,甚至沒有使用JavaScript上傳文件,看http://www.html5rocks.com/en/tutorials/file/dndfiles/。然後只提交您需要的數據作爲AJAX請求的一部分。

1

當您上傳文件時,在將其保存到本地之前,將其保存到臨時文件。它的位置可以通過訪問:

$_FILES['uploadedfile']['tmp_name'] 

您可以選擇不保存文件並fopen()臨時文件,只要你做到這一點,臨危的POST在同一腳本中。

3

該文件必須保存在某個地方,在這種情況下,在這種情況下是臨時目錄;你可以從臨時目錄中獲取文件的內容,然後如果你真的需要刪除。請看下面的代碼:

$file = file_get_contents($_FILES["ufiley"]["tmp_name"]); 

unlink($_FILES["ufiley"]["tmp_name"]); 

//contents would be stored in $file 
+4

不需要'unlink()'臨時文件AFAIK,因爲PHP會在腳本結束時自動執行此操作。 – 2012-02-01 18:23:13

+0

@George是的。這是爲了清晰起見。 – Mob 2012-02-01 18:25:53