1

フォームでいくつかのテストを行っているところ、問題が発生しました。機能する非常に単純なテスト スクリプトがありますが、問題は、フォームの FILE フィールドが何らかの理由で $_POST 配列に送信されないことです。 encode="multipart/form-data" を取り出します。それ以外の場合は、他のフィールドを取得するだけです。スクリプトは次のとおりです。

<?PHP
print_r($_POST);
echo"<br>";
print_r($_FILES);

$name = $_FILES["img1"]["name"];
$tmp_name = $_FILES["img1"]["tmp_name"];
$uploads_dir = "uploads";
echo "<br>TEMP NAME:</b>";
echo $tmp_name;
move_uploaded_file($tmp_name, "$uploads_dir/$name");
?>

<html>
<body>
<br><br>
-------------------------
<form name="test" id="test" action="index.php" method="post" enctype="multipart/form-data">

<label>Name</label>
<input type="text" name="title" id="title">
<br>
<label>File</label>
<input type="file" name="img1" id="img1" size="40">
<br>
<input type="submit" value="submit">
</form>

出力は次のとおりです。

POST ARRAY: Array ( [title] => some title )
FIELS ARRAY: Array ( [img1] => Array ( [name] => chicken.jpg [type] => image/jpeg [tmp_name] => /tmp/phpcrBLw9 [error] => 0 [size] => 30940 ) )
TEMP NAME:/tmp/phpcrBLw9 

ご覧のとおり、POST にはファイル名ではなくタイトルしかありません。プログラミング上の理由から両方が必要です。ごまかしたり、フィールドを非表示にしたり、値を手動で編集したりせずにそれを行う方法はありますか?

4

2 に答える 2

3

$_POST 内の $_FILES を見ることはできません。vardump($_FILES);サイズ、tmp 名など、アップロードされたファイルに関するすべての情報が保存されていることがわかる場合、それらは異なるスーパーグローバルです。これが PHP の構築方法であり、それについてできる唯一のことは、

$_FILES['img1']['名前']

于 2012-08-12T09:01:29.897 に答える
1

アップロードされたファイルの名前には、次の場所からアクセスできます。

$_FILES["img1"]["name"]
于 2012-08-12T08:57:34.403 に答える