你需要的所有信息都显示在PHP主配置页面中,可以通过在远程服务器上运行phpinfo()来显示此页面,向下滚动直至找到Core部分中的file_uploads。如果Local Value是On,就可以上传了,但你还应该检查以下表中列出的其他配置设置。
指令 | 默认值 | 说明 |
---|---|---|
max_execution_time | 30 | PHP脚本可以运行的最大秒数。如果脚本的运行超过这个时间,PHP生成一个致命错误 |
max_input_time | 60 |
PHP脚本解析$_POST和$_GET数组以及文件上传所允许使用的最大秒数,如果上传数据非常大,可能会超时 由于上传大文件可能需要花费一些时间,还可能需要在php.ini中更改max_input_time值,或者在脚本中使用set_time_limit()函数绕过它。 |
post_max_size | 8M |
所有$_POST数据允许使用的最大值,包括文件上传。虽然默认值是8MB,但托管公司允许上传的值可能更小 post_max_size的8MB默认值包含$_POST数组的内容,因此同时上传的文件的总大小要小于8MB,单个文件不超过2MB。服务器管理员可以修改这些默认值,因此检查托管公司所设置的限制十分重要的。如果超出这些限制,无论多么完美的脚本也会失败。 控制PHP可以接受的,通过POST方法上传数据的最大值。该值必须大于upload_max_filesize设置值,因为它是所有POST数据的大小,包括了任何上传的文件 |
upload_tmp_dir | NULL |
指定上传的文件在被处理之前的临时保存目录。如果没有设置该选项,将使用系统默认值 在脚本把上传的文件移动到永久位置之前,这是PHP存储这些文件的地方。如果php.ini中没有定义这个值,则PHP使用系统默认的临时目录。 |
upload_max_filesize | 2M | 单个上传文件大小的最大值。虽然默认为2MB,但托管公司允许上传的值可能会更小。只有数字表示所允许上传的字节数。数字后面加K表示允许上传的千字节数 |
除了在PHP配置中自动限制设置之外,你还可以在HTML表单中指定上传文件的最大大小。
利用PHP上传文件
<form enctype="multipart/form-data" action="" method="post"> <!--这是一个隐藏的表单字段,因此它不在屏幕上显示。然而,把它放置在文件输入字段之前是非常重要的,否则,它将无法工作。name属性MAX_FILE_SIZE是固定的。--> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="image"> <input type="submit" name="upload" value="上传"> </form>
初始表单标签的enctype部分指示表单应该能够处理多种类型的数据,包括文件。如果你想接受文件上传,就必须包括这个enctype!另请注意:表单必须使用POST方法。MAX_FILE_SIZE隐藏输入框是一种表单限制元素,用于限制所选的文件可以有多大(以字节为单位),它必须出现在文件输入框之前。虽然用户可以很容易地避开这种限制,但仍然应该使用它。