2012-02-28 12 views
1

ファイルを特定のフォルダにアップロードできる簡単なPHPスクリプトに問題がありました。私はこれを行うには複数の方法を試みましたが、私はまだ成功していません。bool(false)ファイルをアップロードする

私のコードに誤りがありましたら、これを修正するか、アドバイスをお願いします。

主なPHPのコード:クリックで時に呼び出された

<p>Browse For a File on your computer to upload it!</p> 
<form enctype="multipart/form-data" action="upload_photos.php" method="POST"> 
Choose Photo: 
<input name="userfile" type="file" /><br /> 
<input type="submit" value="Upload Photo" /> 


<?PHP  


if ($userfile_size>250000) 
    {$msg=$msg."Your uploaded file size is more than 250KB so please reduce the file size and then upload.<BR>"; 
$file_upload="false";} 

else{ 

if (!($userfile_type<>"image/jpeg" OR $userfile_type<>"image/tiff" OR  $userfile_type<>"image/png")) 
    {$msg=$msg."Your uploaded file must be of JPG, PNG, or tiff. Other file types are not  allowed<BR>"; 
$file_upload="false";} 

} 
    ?> 

</form> 

</label> 
</form> 

PHPコード(upload_photos.php)

<?php 
$target_path="uploads/"; 

chmod("uploads/", 0755); 
$target_path=$target_path . basename($_FILES['uploadedfile']['name']); 

$test=move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path); 

if($test) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
    var_dump($test); 
} 
?> 

なぜ私の最終結果私は理解していない[ "ファイルをアップロード" をクリックすると、ボタン]には、次の結果のみが含まれます。

「ファイルをアップロードするときにエラーが発生しました。もう一度やり直してください!bool(false)」

もう1つ:$ target_pathとchmodの完全なコンピュータフォルダパスを使ってみました。

私が間違っていることを誰か見ていますか?

+0

誰が 'uploads'ディレクトリを所有していますか?もしそれが 'apache'(あるいはサーバが動作しているどんなユーザでも)でなければ、これはうまくいきません。 – spencercw

答えて

2

あなたは<input name="userfile"ですが、$_FILES['uploadedfile']をスクリプトに使用してください。どちらか一方を使用してください。

それ以外の場合は、chmodが有効で、フォルダが書き込み可能であることを確認してください。

+0

ジョー、ありがとう。私はこの問題に対する多くの答えを探し求めてきました。私は本当にあなたの助けに感謝し、問題は解決されました。あなたは人生の節約者です。 –

1

bool(false)var_dump($test);の出力であり、move_uploaded_fileがfalseを返すことを示します。

基本的なデバッグのステップとして、あなたは(私はあなたではないことを、あなたのコードから伝えることができ、その配列の右側の要素にアクセスしていることを確認するvar_dump($_FILES)を試してみてください、インデックスがあなたの<input type="file"/>name属性になります素子)。

あなたのロジックには他に少なくとも1つの重大な欠陥があります...アップロードフォームのPHPコードは意味をなさないものです。 PHPコードのブロックは、ユーザがファイルをアップロードする前にサーバ側で実行されます。おそらくうまくいかないでしょう。チェックしている2つの変数、$userfile_size$userfile_typeはどこにも定義されていません。

+0

さて、2つの変数を取り除くことを忘れてしまった、それは私が今やっていることです(ファイルの制限など)。 –

関連する問題