首先建立两个文件: change.html 和 change.php

change.html 文件的表单代码如下:

change file example.

文件:

这里有几个要注意的地方,首先看这句

,这里我们采用POST方法,个别浏览器还支持PUT方法,当然这需要对脚本进行修改,我并不建议这么做。表单中必须设置enctype="multipart/form-data,这样,服务器就知道上传文件带有常规表单信息,记住,这个是必须设置的。此外还需要一个隐藏域来限制上传文件的最大长度:,这里name必须设置成MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M。再看这句:,type="file"说明了文件类型,这样一个基本的上传文件接口就完成了,接下来讲讲如何用PHP来处理上传的文件,此外你的php.ini中设置的上传文件最大长度可能会影响到你的实际上传,请根据实际情况修改,另PHP的上传是先传到临时目录,在移至指定目录的,了;临时目录的可根据需要修改,也可使用默认值……

以下为表单提交change.php文件代码,来看看这个文件都有什么:

header("content-type:text/html;charset=utf-8");

/**

* @param string $oldfile 需要更换的文件名(包含具体路径名)

*/

function changeFile($oldfile){

$newfile = $_FILES['file']['name'];//获取上传文件名

$fileclass = substr(strrchr($newfile, '.'), 1);//获取上传文件扩展名,做判断用

$type = array("jpg", "gif", "bmp", "jpeg", "png");//设置允许上传文件的类型

if(in_array(strtolower($fileclass), $type)){

if(file_exists($oldfile)){

unlink($oldfile);

}

if(is_uploaded_file($_FILES['file']['tmp_name'])){//必须通过 PHP 的 HTTP POST 上传机制所上传的

if(move_uploaded_file($_FILES['file']['tmp_name'], $oldfile)){

//输出图片预览

echo "

您的文件已经上传完毕 上传图片预览: ";

}

}else{

echo "

上传失败,文件大于2M,请重新上传!";

}

}else{

$text = implode(",", $type);

echo "

您只能上传以下类型文件:", $text, "
";

// echo "";

}

}

changeFile("./files/1.png");

刚看这些你可能有点晕~~,慢慢看,你就会发现其实这玩意SO EASY!!先讲下原理,该程序以上传图片为例,先判断文件类型是否为图片格式,若是则上传文件,接着上传文件到并替换指定文件,成功上传则输出上传的图片预览。这里要对程序中一些函数作些解释。先看substr(strrchr($newfile, '.'), 1),strrchar()函数有什么作用呢,我举个例子大家就知道,比如一个图片文件 pic.jpg,我们用 strrchar()处理,strrchr(pic.jpg,'.'),它将返回.jpg,明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符串。配合 substr() 我们就可以取到jpg,这样我们就得到了文件的后缀名,来判断上传文件是否符合指定格式。本程序把指定的格式放在一个数组中,实际使用时可根据需要添加。

接着,我们调用判断文件类型的函数,并将其转化为小写strtolower($_FILES['file']['name']),这里有个很关键的东东$_FILES ,这是个超级全局数组,保存了需要处理的表单数据,如果开启了register_globals,也可以直接访问,但这是不安全的。看刚才那个上传接口,根据这个表单名称,我们可以得到很多信息:

$_FILES['file']['name']--   得到文件名称

$_FILES['file']['tmp_name']--得到临时存储位置

$_FILES['file']['size']--得到文件大小

$_FILES['file']['type']--得到文件MIME类型

得到这些信息,就可以轻松判断文件的信息了,是不是很方便?^_^,接下来还有一些函数需要了解,file_exists()--判断指定目录是否存在,不存在我们当然不能上传(好像是废话!),is_uploaded_file--判断文件是否已经通过HTTP POST上传,move_uploaded_file--将上传文件移至指定目录。成功上传,我们就输出预览,否则输出上传失败……

内容很详细,过程也记录下来供大家仔细研究,希望对大家的学习有所帮助。

php替换图片_php实现图片上传并进行替换操作相关推荐

  1. php中图片上传_php实现图片上传并进行替换操作

    首先建立两个文件: change.html 和 change.php change.html 文件的表单代码如下: change file example. 文件: 这里有几个要注意的地方,首先看这句 ...

  2. 腾讯云COS服务器文件上传与生命周期的设置,以及Opencv nparry数组格式图片非文件流方式上传

    目录 Opencv numpy arry图片非文件流直接上传 腾讯云COS服务器的文件上传和生命周期的设置 1.申请服务器 2.创建桶 3.官方文档以及安装SDK 4.开始使用(官方示例代码) 5.必 ...

  3. CSDN 转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(已有图床)

    前言 注意:本篇并非创建图床的问题 本人使用的图床是阿里云的 最近将本地的markdown文档上传到CSDN,所有的图片都会提示:源站可能有防盗链机制,建议将图片保存下来直接上传 但是直接把图片链接粘 ...

  4. axios获取图片显示_Vue.js+axios图片预览以及上传显示进度

    在平时项目开发中,我们经常会对文件做一些上传操作,不仅仅要实现基本需求,也要兼顾用户体验,根据自己在工作中遇到的问题谈谈对图片上传的预览以及上传进度的优化. 1.搭建项目 基于Vue.js+axios ...

  5. 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)

    解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下) 参考文章: (1)解决:百度编辑器UEditor,怎么将图片保存到图片 ...

  6. 【Android实战】----基于Retrofit实现多图片/文件、图文上传

    本文代码详见:https://github.com/honghailiang/RetrofitUpLoadImage 一.再次膜拜下Retrofit Retrofit无论从性能还是使用方便性上都很屌! ...

  7. 图片文件压缩并上传至阿里云OSS

    图片处理 Thumbnails 在进行Java开发时可以使用Thumbnails工具类对图片进行处理,旋转.裁剪.格式转换.加水印等. 使用步骤 导包 <dependency><gr ...

  8. 解决CSDN导入md文档时图片显示不出来,出现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiakLQhy-1628602853830)提示

    解决CSDN导入md文档时图片显示不出来,出现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiakLQhy-1628602853830)提示 https://blog ...

  9. Delphi FMX正确设计和加载图片满足分布式跨平台App的性能需求-分布式跨平台App中美工图片的处理、上传下载、并发及客户端显示技术架构

    Delphi FMX正确设计和加载图片满足分布式跨平台App的性能需求 分布式跨平台App中美工图片的处理.上传下载.并发及客户端显示技术架构 [综合:客户端(内存耗用.设备屏幕的自动适配).服务端( ...

最新文章

  1. VIM命令快速记忆(转自杰哥)
  2. 计算机二级第十九套题电子表格,2012年计算机二级Access第十九套上机试题及答案详解...
  3. 在SDN走向商用部署的路上,锐捷网络一直在不断实践
  4. Android 仿微信小视频录制
  5. 微软官方工具MediaCreationTool制作U盘Windows10启动盘教程
  6. Android源码设计模式分析项目
  7. plsql(轻量版)_记录类型2
  8. 仓库每天的账怎样做_新年第一站,济南:仓储匠人仓库问题解决与实战力培训...
  9. DW制作过程基本标准常识
  10. 虚拟局域网(VLAN)的管理
  11. 谈谈Groovy闭包
  12. 电脑拖机,win10一台电脑两人用
  13. linux pe ef 详解,PE工具列表(看雪學院)
  14. .Net 文件名后缀的详细解释
  15. 互联网产品经理必备文档介绍
  16. 维达东南亚新总部正式投入运营;西门子能源在粤港澳大湾区持续深化务实合作 | 美通企业日报...
  17. WPS广告投放的优势!WPS广告投放的展现形式!
  18. windows异常处理
  19. WEB Workers 介绍
  20. 小米mix2s android8,小米8和MIX2S哪个好?小米MIX2S和小米8区别对比 (全文)

热门文章

  1. java实现tcp服务器(单线程、多线程)、客户端
  2. Echarts数据可视化series-radar雷达图,开发全解+完美注释
  3. AD小技巧:update changes to PCB后如何调整布线
  4. 深入理解PHP之foreach
  5. PAT-乙级-1035 插入与归并
  6. Nginx的安装和设置
  7. 通俗易懂JSONP讲解
  8. IOS UIView 属性clipsToBounds
  9. iOS 浅谈:深.浅拷贝与copy.strong
  10. 容易忽视但是功能灰常强大的Java API(二. 读写对象)