2012-03-30 14 views
0

私は4ページあります。彼らはとてもシンプルです。ファイルをアップロードして別のPHPページに移動します

のindex.php(WORKS)

<html> 
<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="file" name="file"><br /> 
<input type="submit" value="Now upload it!"> 
</form> 
</html> 

upload.php(WORKS)

<?php 
if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
    } 
else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

    echo 'Are you sure you want to continue saving this file'; 
    echo '<a href="yes.php">Yes, continue</a> 
    <br /> 
    <br /> 
    <a href="no.php">No thanks</a>' 
    } 
?> 

no.php(WORKS)

<?php 
echo 'Thanks anyway'; 
?> 

yes.php(ERROR)

<?php 
    if ($_FILES["file"]["error"] > 0) 
     { 
     echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
     } 
    else 
     { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

     echo 'We will now save this document:'; 
     //Save document code 
     } 
    ?> 
イエスの

出力:

Notice: Undefined index: file in /home/public_html/test/yes.php on line 2 Invalid file 

We will now save this document:? 

あなたは、私はそれを保存することはありません見ることができるように。しかし、私はyes.phpページにそれを保存したいと思います。アップロードされた元のドキュメントを取得することは可能ですか?前もって感謝します。

+0

'$ _FILES' varはページを変更したときに設定されていないと思うので、うまくいきません。しかし、 '$ _POST'にURIを、' yes.php'に 'fopen()'を渡すことができます。 – Jon

+0

@JamesWilliamsが正しいです。これをディスクに保存し、ユーザーが「保存しない」場合はunlink()を使用します。 –

答えて

2

アップロードされたファイルは、歌PHPインスタンス/リクエストサイクル。
アップロードされたファイルは、tempディレクトリに保存されます。スクリプトの実行が終了してもまだそこに残っていれば、PHPは必要がないと仮定してそれらを削除します。

ファイルを永続化する場合は、ファイルがアップロードされたのと同じ要求内の別の場所にファイルを移動する必要があります。

1

フォームから別のページにファイルを渡そうとしています。ポスト値は有効ではなくなります。 upload.php内のファイルを一時フォルダに保存し、そこから$ _GET []またはセッション変数を介してyesまたはnoページに渡すことをお勧めします。 no.phpページ

そのファイルを取り、これは、サーバーからファイルを削除します

unlink($somefile); 

を使用します。

yes.phpページでファイルを移動またはコピーします。ファイルをコピーする場合は、unlinkを使用して一時ファイルを削除します。

+0

ユーザーがページを終了するとどうなりますか?ファイルはまだ存在しますか? 私は技術的にそれを削除するものを実行していないので。 – EGHDK

+1

タイムスタンプ付きのデータベースに一時ファイル名を追加します。 x分より古いものはすべて削除する必要があります。彼らが「はい」または「いいえ」と答えた場合は、とにかく一時ファイルが削除されていました。 –

+0

@EGHDK Mr Wednesdayのアドバイスと一緒に行くことができます。または、すべてのページにファイルの保存期間をチェックし、数分後に削除してファイルを削除することができます。私はこれを使ってウェブサイトのキャッシュバージョンを持っています。 –

0

あなたは一時的にファイルを保存するmove_uploaded_file()を使用してみて、その後

$tmpFile = $_GET["filename"]; 

を使用して

<a href="yes.php?filename=tmp_file_path">Yes, continue</a> 
<a href="no.php?filename=tmp_file_path">No thanks</a> 

はその後yes.phpでファイル名を取得使用してファイル情報を渡す、あるいはまったくでそれを削除することができます。 PHPを使用して

unlink($_GET["filename"]); 
関連する問題