2011-11-08 151 views
1

所以我有这样的代码:

<form name="form" action="./" method="post"> 
<input type="file" name="newfile" id="newfile" /> 
</form> 

当我运行的操作页面上的这个PHP脚本,什么都不会发生

echo "$_FILES['newfile']['name']; 
print_r($_FILES); 

它像$_FILES变量是空的。有没有什么办法解决这一问题?

回答

3

您需要在表单上设置enctype="multipart/form-data"属性。

Example 1 from php.net

<!-- The data encoding type, enctype, MUST be specified as below --> 
<form enctype="multipart/form-data" action="__URL__" method="POST"> 
    <!-- MAX_FILE_SIZE must precede the file input field --> 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 
    <!-- Name of input element determines name in $_FILES array --> 
    Send this file: <input name="userfile" type="file" /> 
    <input type="submit" value="Send File" /> 
</form> 
+0

完美工作,谢谢 – DontTurnAround

1

如果不指定<form … enctype="multipart/form-data">那么数据将在不支持文件的方式进行编码。

添加具有该值的属性。

the HTML specification

ENCTYPE =内容类型[CI]

该属性指定用于将形式提交给服务器(内容类型时方法的值是“后“)。该属性的默认值是“application/x-www-form-urlencoded”。值“multipart/form-data”应该与INPUT元素结合使用,type =“file”。

the PHP manual

<!-- The data encoding type, enctype, MUST be specified as below --> 
<form enctype="multipart/form-data" action="__URL__" method="POST"> 
0
echo "$_FILES['newfile']['name']; 

这是一个语法错误。应该

echo $_FILES['newfile']['name']; 

echo "{$_FILES['newfile']['name']}";