2012-02-01 9 views
13

私はPhPスクリプトでプレーンテキストファイルを使用しています。 ファイルをローカルに保存せずにPhPスクリプトで処理する方法はありますか?どこでもファイルをアップロードして保存するだけです。私はちょうどファイルからいくつかの名前を引っ張って、それで終わらせる必要があります。 ファイルのローカルコピーを使用すると、それ以外のものはすべて動作しているので、保存してから削除してください。コピーの保存をスキップしてその情報を直接取得する方法があるかどうかは疑問でした。php FILE POSTは保存せずにアップロードする

ここにファイルをアップロードします。ローカルに保存されたファイルのコピーで作業

<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

:次のコードを参照してください。 reuestメソッド

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'])== 'put' – netadictos

0

を使用何、それは私の知る限りで読み取ることが保存する必要がないだろう、私の通常ルーチンは同じですアップロード、読んだり削除したりできます。

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

ファイルをアップロードすると、ローカルに保存する前に一時ファイルに保存されます。あなたは限り、あなたはPOSTをrecieves同じスクリプト内でこれを行うと、ファイルおよびfopen()一時ファイルを保存しないように選択することができ

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

:の場所はアクセスすることができます。

3

ファイルは、この場合は一時ディレクトリになる前にどこかに保存する必要があります。一時的なディレクトリからファイルの内容を取得することができます。本当に必要な場合は、削除してください。そのテキストファイル(サイズを想定したが、その巨大ではない)場合は、それは、チェックしたアップロードのどの種類がわからない場合は通常、あなたが

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

でそれを読むことができ

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

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

//contents would be stored in $file 
+4

スクリプトが終了したときにPHPが自動的に行うので、一時ファイルAFAIKを 'unlink()'する必要はありません。 –

+0

@Georgeはいそうです。それは明確にするためです。 – Mob

関連する問題