PHP上传文件摘要
1。先做一个最简单的上传复制代码代码如下所示:
<形式行动=upload_file .phpmethod=后
enctype =多部分/表单数据>
文件名:
复制代码代码如下所示:
< PHP
如果($ _files {(文件
{
如果($ _files { 文件
{
返回代码:。_files美元{ 文件
}
其他的
{
回声上传:文件 _files美元{
回声型:_files美元{文件
回声($ _files {大小:。文件
临时文件。_files美元{ 文件
如果(file_exists(上传 / $ _files {。文件
{
_files { echo $ 文件
}
其他的
{
move_uploaded_file($ _files { 文件
上载。_files美元{ 文件
存储在:。_files美元{ 文件
}
}
}
其他的
{
无效文件;
}
>
2。然后了解超级全局变量的值_files美元
复制代码代码如下所示:
_files { } { 'userfile美元的'name' }
_files { } { 'userfile美元类型}
_files { } { 'userfile美元的'size}
_files { } { 'userfile美元的'tmp_name}
_files { } {美元'userfile '错误' }
所有的值_files { } {美元'userfile '错误' }是:
upload_err_ok其值为0,没有出现错误,文件上传成功。
upload_err_ini_size的值是1,和上传的文件超过在php.ini中的upload_max_filesize期权的价值。
upload_err_form_size的值是2,和上传文件的大小超过了HTML表单的max_file_size选项指定的值。
upload_err_partial的值是3,只有部分文件上传。
upload_err_no_file的值是4,没有文件上传。
upload_err_no_tmp_dir的值是6,和临时文件夹不能found.php 4.4.7和PHP 5.0.3介绍。
upload_err_cant_write的值是7,和文件的写入fails.php 5.1.0介绍。
三.很多情况下:需要严格判断上传文件的类型
我们知道,_files { } { 'userfile美元类型}是用来确定上传文件的类型是非常不明智的,因为判断是基于文件的后缀名,任何人都可以成为一个MP3文件为JPG后缀伪装的图片上传,所以PHP官方推荐使用PHP来确定文件的MIME打开百度开发的方法有很多php_fileinfo扩张,赢得和Linux都略有不同。
4。场景:自动重命名上传文件名
复制代码代码如下所示:
如果(file_exists(, / /上传_files美元{。文件
{
做{
$后缀 ;
suffix_length = 4美元;
$str =0123456789abcdefghijklmnopqrstuvwxyz ;
$ len = strlen(str)- 1;
添加4个随机字符后的文件名
为($我= 0;美元美元美元我<< suffix_length;i++){
$后缀= $(0,$)};
}
upload_filename美元=美元_files {文件} { 'name' };
为文件名= substr(upload_filename美元,0美元,个子(upload_filename,为后缀。)).. substr($ upload_filename,个子($ _files { 文件
}而(file_exists(, / / 上传。$文件名));
move_uploaded_file($ _files { 文件
其他{ }
move_uploaded_file($ _files { 文件
}
5。场景二:按日期子目录上传文件
复制代码代码如下所示:
=;
如果(!mkdir(合结构,0777,真)){
模具('failed创建文件夹…);
}
move_uploaded_file($ _files { 文件
6。场景三:多文件上传
复制代码代码如下所示:
图片:
复制代码代码如下所示:
< PHP
foreach($ _files { 图片
如果($错误= = upload_err_ok){
tmp_name美元美元_files { = 图片
$name$ _files { = 图片
move_uploaded_file($ tmp_name,数据 / $名称);
}
}
>
在某些情况下,这个多文件的可变结构不好用:
复制代码代码如下所示:
数组(1){
{上传>数组(2){
{名称>数组(2){
{ 0 } = >字符串(9)file0 .txt
{ 1 } = >字符串(9)file1 .txt
}
{类型>>数组(2){
{ 0个字符串(10)文本
{ 1个字符串(10)
}
}
}
在许多情况下,我们需要这样的结构。
复制代码代码如下所示:
数组(1){
{上传>数组(2){
{ 0个数组(2){
{名字} = >字符串(9)file0 .txt
{类型>>字符串(10)文本
},
{ 1个数组(2){
{名字} = >字符串(9)file1 .txt
{类型>>字符串(10)文本
}
}
}
通过以下功能可以很容易地转换结构
复制代码代码如下所示:
功能diverse_array(合矢量){
结果=数组();
foreach(合矢量达key1 = $ value1)
foreach($ value1 value2 KEY2美元=美元)
结果{ } { KEY2美元美元美元美元key1 } = value2;
返回$结果;
}
美元($ _files diverse_array上传= {上传));
7。当需要配置服务器以修改最大上载文件大小时
第一,形式上
您可以限制上传文件的大小(可以绕过)。
然后需要调整服务器上的配置。
Php.ini:
复制代码代码如下所示:
max_execution_time = 30每单位时间最长的剧本,二
max_input_time = 60,每个脚本的时间可以消耗,和单元二
memory_limit = 128M,这是由脚本消耗的最大内存
post_max_size = 8m。表单提交的数据的最大8m,这是不限制上传单个文件大小限制,但通过表单提交的数据。
upload_max_filesize = 2M,上传文件的最大许可尺寸
Nginx:
复制代码代码如下所示:
位置
根HTML;
指数index.html index.htm;
client_max_body_size 1000m;
}
让我们暂时把这些事情总结一下。我希望他们能喜欢他们。