博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 上传图片
阅读量:4948 次
发布时间:2019-06-11

本文共 3719 字,大约阅读时间需要 12 分钟。

PHP 主要是同过POST方法上传文件,文件上传后,会被存储到服务器段的临时目录中(默认的是系统临时文件目录,可以通过修改PHP文件中的 upload_tmp_dir 选项来改变临时目录),然后需要用 PHP 中的 move_upload_file() 函数将其移动到指定位置。

上传文件的所有信息被包含在一个全局二维数组$_FLFS种。该数组共5个元素,元素的第一个下标表示表单的文件上传元素名,第二个下标是下面5个预定下标之一,分别描述了上传文件的属性(upload-name 是表单中上传文件标记的名称)。

  1. $_FILSH['upload-name'] ['name']:从客户端向服务器上传文件的文件名。
  2. $_FILSH['upload-name] ['type']:上传的文件MIME类型。这个变量是否赋值取决于浏览器的功能。
  3. $_FILSH['upload-name] ['size']:上传的文件大小。
  4. $_FILSH['upload-name] ['tmp-name']:上传之后,将此文件移动到最终位置之前赋予的临时文件。
  5. $_FILSH['upload-name] ['error']:上传文件状态码,有7种可能取值。

7种可能的上传的状态码如下:

  • UPLOAD_ERR_OK:文件上传成功;
  • UPLOAD_ERR_INI_SIZE:文件大小超出 upload_max_filesize 所指定的最大值,该值在PHP配置文件中设置;
  • UPLOAD_ERR_FROM_SIZE:文件大小超出 MAX_FILE_SIZE 隐藏表单域参数(可选);
  • UPLOAD_ERR_PARTLAL:文件至上传了一部分;
  • UPLOAD_ERR_NO_FILE:上传表单中没有制定文件;
  • UPLOAD_ERR_NO_TMO_DIR:找不到临时文件;
  • UPLOAD_ERR_CANT_WRITE:文件写入失败。

move_upload_file()函数的用法如下:

bool move_uploaded_file ( string $filename , string $destination);

  其中 $filename 为上传的文件名, $destination 为上传文件的最终目的的地址。如果 $filename 不适合法的上传文件或者由于某些原因无法移动文件,则 move_uploaded_file() 将返回FALSH,并输出警告信息。

例如:

1 
2
3
4
1 
0){ 8 echo "错误:: " . $_FILES["file"]["error"] . "
"; 9 }else{10 echo "上传文件名: " . $_FILES["file"]["name"] . "
";11 echo "文件类型: " . $_FILES["file"]["type"] . "
";12 if (file_exists("/home/liuyu/www/upload/upload/" . $_FILES["file"]["name"])){13 echo $_FILES["file"]["name"] . " 文件已经存在。 ";14 }else{15 $str = move_uploaded_file($_FILES["file"]["tmp_name"], "/home/liuyu/www/upload/upload/" . $_FILES["file"]["name"]);16 echo md5($str);17 //echo "文件存储在: " . "/home/liuyu/www/upload/upload/" . $_FILES["file"]["name"];18 }19 }20 }else{21 echo "非法的文件格式";22 }

上传文件的表单中, <from>的属性必须设置为 enctype="multipart/form-data" , <input> 标签的类型 type 必须是 file ,用来在浏览器断限制上传文件大小的隐藏域的名称必须为MAS_FILE_SIZE,其值的单位为字节。

运行结果:

如果上传失败,有可能是PHP配置文件纵某项配置不能满足上传该文件的需要。首先,打开PHP配置文件中的 file_uploads 选择必须打开,然后检查 upload_max_filesize 选项值,它被用来设置上传文件大小的上限,如果上传文件的大小超过这个限制将不会被服务器接受,同时表单MAX_FILE_SIZE 也被用来限制文件的大小,但它的值不能大于 upload_max_filesize 的值。此外,内存限制 memory_limit、脚本执行时间的限制 max_execution_time、脚本接收输入时间限制 max_input_time、POST 大小限制 post_max_size等,都会影响上传文件,可以适合当增大这些值来保证文件的成功上传。

上传文件或图片进行重命名是我们在php上传中会碰到的一个问题了,在重命名无非就是对你上传的文件生成一个随机的字符串了,包括有Md5,随机,或按时间日期来重命名了,下面我来给介绍一下。

1 
0){ 5 echo "错误: " . $_FILES["file"]["error"] . "
"; 6 }else{ 7 echo "上传文件名: " . $_FILES["file"]["name"] . "
"; 8 echo "文件类型: " . $_FILES["file"]["type"] . "
"; 9 echo "上传大小: " . ($_FILES["file"]["size"] / 1024) . " Kb
";10 echo "临时上传文件: " . $_FILES["file"]["tmp_name"] . "
";11 $uptype = explode(".", $_FILES["file"]["name"]);12 $newname = $date.".".$uptype[1];13 //echo($newname);14 $_FILES["file"]["name"] = $newname;15 if (file_exists("/home/liuyu/www/upload/upload/" . $_FILES["file"]["name"])){16 echo $_FILES["file"]["name"] . " already exists. ";17 }else{18 $_FILES["file"]["name"] = move_uploaded_file($_FILES["file"]["tmp_name"],"/home/liuyu/www/upload/upload/" . $_FILES["file"]["name"]);19 echo "";20 }21 }22 }else{23 echo "上传失败";24 }

 

$newname = $date.".".$uptype[1]; //将文件名重写成系统时间

 运行结果:

    

    上传文件和修改上传文件重名就做好。

转载于:https://www.cnblogs.com/liuyu2014/p/6640841.html

你可能感兴趣的文章
ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理
查看>>
Jmeter参数的AES加密使用
查看>>
hdu 2594 Simpsons’ Hidden Talents【kmp】
查看>>
numpy两列数据合并的方法
查看>>
多机联合产生负载
查看>>
kubelet Pod status的状态分析
查看>>
常见错误: 创建 WCF RIA Services 类库后, 访问数据库出错
查看>>
对Javascript面向对象的理解
查看>>
已知一个日期和天数, 求多少天后的日期(是那个超时代码的AC版)
查看>>
CAS 逻辑流程图
查看>>
hyperopt中文文档:Scipy2013
查看>>
testng+IEDriverServer+yum+tomcat下载软件包
查看>>
perl6 Net::HTTP 不能发送https请求
查看>>
python 远程 部署和运行
查看>>
hihocoder 第一周 最长回文字串
查看>>
MongoDB学习day02--数据库增删改查
查看>>
spoj705 后缀数组求不同子串的个数
查看>>
KMP算法的一点学习笔记
查看>>
分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
查看>>
localStorage 杂记
查看>>