上传文件
允许用户上传文件是必要的,许多网站,所以,我们如何做到这一点,正是?但话又说回来,有一些方便的书面文件上。审议了麻烦呢?那么,这里的一些帮助是稍微更容易消化。
首先,您需要HTML网页的形式将谎言。这种形式必须确定文件最大规模的上传,并必须有文件上传领域本身
MAX_FILE_SIZE界定的尽可能多的文件大小,以字节为单位,当然。名称属性上传领域(指定的档案价值的type属性)的重要组成部分,正如我们稍后将使用此在我们的脚本来知道哪些要上传的文件(这是用来支持多种上传) 。
下一步,我们要上传文件。但首先,重要的是要理解美元_FILE [ ]数组。
在美元_FILE [ ]数组,有一个项目,每一个领域中上传的形式发送用户此脚本。因此,在我们的案例,有一个指数命名为' userfield ' ,为一个外地与这个名字在我们的形式。每个值的数组也是一个关联数组,以下项和值(改写明确从文件) :
$target_file = '/path/to/upload/'.basename($_FILES['userfile']['name']);
?>
关键价值
'名称'文件名使用客户的计算机。
'型'的MIME类型的文件(如图像/ gif格式) 。该浏览器并不总是提供这方面的,和价值不应假定是正确的。
'大小'的大小上传的文件(以字节为单位) 。
' tmp_name '的文件给上传的文件,其中应立即转移,并更名后的成功上传。地点是无关紧要的,因为你使用的方法把文件( move_uploaded_file ,我使用后)都知道的位置。
'错误'的错误代码(或成功的代码,如果0 )的问题发生在上传。 (错误代码)
表1 :简要介绍了钥匙和价值观
所以,现在我们可以开始进行业务。首先,我们得到的文件名,我们将想给上传的文件,而且目录,我们希望把它。
$target_file = '/path/to/upload/'.basename($_FILES['userfile']['name']);
?>
使用basename是绝对必要的。没有这一点,您正在运行一个巨大的安全风险。如果用户要上传文件的名称,开始使用相对路径上升,如../../../, ,他们最终将得到根除,可以随时随地浏览到的文件的落实更多的目录后,原来的起点的道路。
警告:这是非常重要的是,可以确保服务器的权限写信给这个目录。如果您的服务器正在运行的任何发行版的Linux或Mac OS X ,您可能会需要属性的目录。
下一步,您只需将上传的文件为target_file 。我认为这样做的,如果为了试验的成功。
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $target_file)) {
// Succeeded
echo 'Yay!';
} else {
// Failed
echo 'No!';
}
?>
这真的就是这么回事。很简单,啊?您可以展开这一点,通过阅读PHP的文件序列和unserializing对象。如果您有任何疑问,可随时张贴的论坛。