2012-08-12 5 views
0

양식으로 몇 가지 검사를 수행하고 걸려 넘어졌지만 작동하는 아주 간단한 테스트 스크립트가 있습니다. 그러나 문제는 양식의 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가 제목 만이 아닌 파일 이름을 가지고, 내가 프로그래밍을 이유로 모두가 필요, 속임수를 쓰지 않고 숨겨진 필드 나 편집 된 값을 수동으로 가질 필요없이이를 수행 할 수있는 방법이 있습니까?

+1

'$ _FILES [ "을 img1"] [ "이름"]'파일 이름, '$ _POST [ "제목"]는 '제목 필드입니다 .. – Gntem

+0

왜 POST에서 파일 이름이 필요합니까? whata 당신이하고 싶어? – goldstein

+0

나는 Joomla 안에 그것을 사용하고 있으며, 일을 매우 이상한 방법이있다, 이것은 내가 수동으로 일을해야 할 것을 의미합니다, 감사합니다. – Mankind1023

답변

3

당신은 $ _POST 안에 $ _FILES를 볼 수 없습니다. 그들은 다른 superglobals입니다. vardump($_FILES);라면 크기, tmp 이름 등과 같이 업로드 된 파일에 대한 모든 정보를 저장하는 것을 볼 수 있습니다. 이것은 PHP가 빌드 된 방법이며, 그것에 대해 할 수있는 유일한 방법은 이름에 액세스하는 것입니다 사용

$ _FILES [ '을 img1'] [ '이름']

1

현재 업로드 된 파일의 이름을 액세스 할 수 있습니다

$_FILES["img1"]["name"] 
관련 문제