2017-05-15 15 views
0

理論的に特定のディレクトリに画像ファイルをアップロードする必要のあるPHPフォームがありますが、それは行いません。これはHTMLです:PHPアップロードフォームにエラーが表示される

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
Select image to upload: 
<input type="file" name="fileToUpload" id="fileToUpload"> 
<input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

そして、これはPHPです:

<?php 
$cartella_caricamento = "pagamenti/"; 
$file_caricato = $cartella_caricamento.basename($_FILES["fileToUpload"] 
["name"]); 
$uploadOk=1; 
$imageFileType=pathinfo($file_caricato,PATHINFO_EXTENSION); 
if(isset($_POST["submit"])) 
{ 
$check = getimagesize($_FILES["fileToUpload"]["nome_upd"]); 
if($check !== false)               //Check if the file is an image 
{ 
echo "Il file è un immagine, OK".$check["mime"]."."; 
$uploadOk=1; 
} else { 
echo "Il file non è un immagine.";     
$uploadOk=0; 
} 
if ($_FILES["fileToUpload"]["size"] > 2000000) {         //check the image size, if it is >2MB it refuses it 
echo "Sorry, your file is too large."; 
$uploadOk = 0; 
} 
if ($uploadOk==0) { 
echo "Il file non è stato caricato a causa di un errore"; 
} else { 
if(move_uploaded_file($_FILES["file_caricato"]["nome_upd"], $file_caricato)) 
{ 
echo "Il file".basename($_FILES["fileToUpload"]["name"])."è stato caricato"; 
}else { 
echo "C'è stato un errore nel caricamento del file."; 
} 
} 
} 

問題は、私はXAMPPを使用してページを実行するとき、それはその行で21

$check = getimagesize($_FILES["fileToUpload"]["nome_upd"]); 

が言うことです定義されていないインデックス(nome_tmp)です。理由はわかりません エクスプローラウィンドウで選択した画像がディレクトリ「pagamenti /」にアップロードされていません

+0

「nome_upd」はどこから入手できますか? $ check = getimagesize($ _ FILES ["fileToUpload"] ["name"]); –

+0

うん、私はちょうど値のために使用する特定の名前があることを発見した –

答えて

1

英語の自動入力された配列キーにイタリア語を使用しているようです。私はこれを受け入れるローカル言語のプラグインがあるかどうかは分かりませんが、標準の配列の値はcan be found hereです。

$_FILES['userfile']['name']
クライアント・マシン上のファイルの元の名前。

$_FILES['userfile']['type']
ブラウザがこの情報を提供していれば、ファイルのMIMEタイプ。例として「image/gif」があります。しかし、このMIMEタイプはPHP側ではチェックされておらず、したがって、その値を当然のものと見なしません。

$_FILES['userfile']['size']
アップロードされたファイルのサイズ(バイト単位)。

$_FILES['userfile']['tmp_name']
アップロードされたファイルがサーバーに保存されたファイルの一時ファイル名。

$_FILES['userfile']['error']
このファイルのアップロードに関連するエラーコード。だから、

あなたのコードを読んでから、あなたが使用する必要があり、配列の値がtmp_nameです。

/*** 
* Will use the uploaded file path 
***/ 
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
+1

私の問題を解決した、それは特定の名前があったことを知らなかったうまく動作するために、 –

関連する問題