2014-04-26 29 views
0

在這裏我想上傳文件,首先我要做的是打開並閱讀文本文件以獲取內容。它的目的是驗證和過濾內容是否真實。無法獲取文本文件中的內容

<table> 
<form id='frmUpload' name='frmUpload' enctype='multipart/form-data' action='uploadFile.php' method='POST'> 
    <tr> 
     <td><input type='file' name='upload'/></td> 
    </tr> 
    <tr> 
     <td><input type'button' id='uploadFile' name='uploadFile'/></td> 
    </tr> 
</table> 
</form> 

$upload=$_POST['upload']; (let say the filename is finance.txt, it could be different name depending on user) 
$files = fopen($upload, 'rb'); 
$lines = 0; 
while (!feof($files)) { 
$lines += substr_count(fread($files, 8192), "\n"); 
} 

fclose($files); 

$contents=file_get_contents($upload); 
$get=explode("\n", $contents); 

我得到的是沒有什麼,就像假裝它沒有內容。 然後我試圖添加源文件的位置,文件名旁邊,

$upload= 'c:/document/finance.txt'; 

是的,這是工作。

這意味着如果我想獲取文本文件中的內容,我必須將源文件的位置與文件名一起檢索。每個用戶都有一臺計算機和不同的目錄來上傳一些文件,當然我不知道文件所在的位置。

我犯了什麼錯誤?

+1

閱讀[* POST方法上傳*在PHP手冊](http://php.net/features.file-upload.post-method),它解釋了一切。 – Gumbo

回答

0

看到這個職位:http://de2.php.net/manual/en/features.file-upload.php

在做每HTTP上傳你需要使用特殊的背景和$_FILES。您的PHP設計爲與要上傳的文件在同一臺機器上運行?那麼你可以肯定地使用不同的方法,但是要注意可能的惡意用法。根據你的描述,你可能會在服務器上運行PHP以供不同用戶公開使用。然後鏈接的信息適用,你很可能需要使用特殊的輸入元素,一些隱藏的元素,並需要從$_FILES讀取上傳的文件內容。這是最常見的做法。

+0

我使用了$ _FILES,但不能工作。該文件來自客戶端計算機,PHP運行在服務器上。 – ESKA

+0

千萬不要錯過提供適當的編碼和方法的形式。還提供帶有文件大小限制的隱藏。另外檢查你的php.ini是否允許上傳。請參閱上面的Gumbo評論中的鏈接瞭解更多! – cepharum

-1

也許你可以先臨時上傳文件(帶有move_uploaded_file),然後讀取文件,如果驗證和過濾是「假」,你可以刪除它。

+0

move_uploaded_file()實際上沒有上傳文件,但是在確保源文件(在服務器上!)之後,文件從其臨時位置移動到一些更持久的文件是通過使用HTTP POST方法上載文件上傳得到的服務器!)。在這裏看到文檔:http://www.php.net/manual/en/function.move-uploaded-file.php。 – cepharum

+0

我知道。我建議上傳文件,移動並閱讀它。 – morawcik

+0

「你可以先臨時上傳文件(帶有move_uploaded_file)」......這就是你的評論所說的......用move_uploaded文件上傳文件... – cepharum