php做图片上传功能
今天来做一个图片上传功能的插件,首先做一个html文件:text.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<h1>文件上传</h1>
<div id="divPreview"><img id="imgHeadPhoto" src="noperson.jpg" style="width: 160px; height: 170px; border: solid 1px #d2e2e2;"alt="" />
</div>
<!--enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码,"multipart/form-data"在使用包含文件上传控件的表单时,必须使用该值。-->
<form action="upload.php" method="post" enctype="multipart/form-data">
<!--file定义输入字段和 "浏览"按钮,供文件上传。--><input type="file" name="file" onchange="PreviewImage(this,'imgHeadPhoto','divPreview');" size="20" /><input type="submit" value="上传"/></form>
</body>
<script type="text/javascript">//js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3function PreviewImage(fileObj, imgPreviewId, divPreviewId) {var allowExtention = ".jpg,.bmp,.gif,.png"; //允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase();var browserVersion = window.navigator.userAgent.toUpperCase();if (allowExtention.indexOf(extention) > -1) {if (fileObj.files) {//HTML5实现预览,兼容chrome、火狐7+等if (window.FileReader) {var reader = new FileReader();reader.onload = function (e) {document.getElementById(imgPreviewId).setAttribute("src", e.target.result);}reader.readAsDataURL(fileObj.files[0]);} else if (browserVersion.indexOf("SAFARI") > -1) {alert("不支持Safari6.0以下浏览器的图片预览!");}} else if (browserVersion.indexOf("MSIE") > -1) {if (browserVersion.indexOf("MSIE 6") > -1) {//ie6document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);} else {//ie[7-9]fileObj.select();if (browserVersion.indexOf("MSIE 9") > -1)fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问var newPreview = document.getElementById(divPreviewId + "New");if (newPreview == null) {newPreview = document.createElement("div");newPreview.setAttribute("id", divPreviewId + "New");newPreview.style.width = document.getElementById(imgPreviewId).width + "px";newPreview.style.height = document.getElementById(imgPreviewId).height + "px";newPreview.style.border = "solid 1px #d2e2e2";}newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";var tempDivPreview = document.getElementById(divPreviewId);tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);tempDivPreview.style.display = "none";}} else if (browserVersion.indexOf("FIREFOX") > -1) {//firefoxvar firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);if (firefoxVersion < 7) {//firefox7以下版本document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());} else {//firefox7.0+ document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));}} else {document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);}} else {alert("仅支持" + allowExtention + "为后缀名的文件!");fileObj.value = ""; //清空选中文件if (browserVersion.indexOf("MSIE") > -1) {fileObj.select();document.selection.clear();}fileObj.outerHTML = fileObj.outerHTML;}return fileObj.value; //返回路径}</script>
</html>
做完后的效果:
这样可以点击浏览选择图片,然后上传,现在我们再做怎样把选择的图片传到我们新建的img文件里来,在做一个php处理页面:upload.php
<?php
//var_dump($_FILES["file"]);
//array(5) { ["name"]=> string(17) "56e79ea2e1418.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(43) "C:\Users\asus\AppData\Local\Temp\phpD07.tmp" ["error"]=> int(0) ["size"]=> int(454445) }
//1.限制文件的类型,防止注入php或其他文件,提升安全
//2.限制文件的大小,减少内存压力
//3.防止文件名重复,提升用户体验//方法一: 修改文件名 一般为:时间戳+随机数+用户名// 方法二:建文件夹//4.保存文件//判断上传的文件是否出错,是的话,返回错误
if($_FILES["file"]["error"])
{echo $_FILES["file"]["error"];
}
else
{//没有出错//加限制条件//判断上传文件类型为png或jpg且大小不超过1024000Bif(($_FILES["file"]["type"]=="image/png"||$_FILES["file"]["type"]=="image/jpeg")&&$_FILES["file"]["size"]<1024000){//防止文件名重复$filename ="./img/".time().$_FILES["file"]["name"];//转码,把utf-8转成gb2312,返回转换后的字符串, 或者在失败时返回 FALSE。$filename =iconv("UTF-8","gb2312",$filename);//检查文件或目录是否存在if(file_exists($filename)){echo"该文件已存在";}else{ //保存文件, move_uploaded_file 将上传的文件移动到新位置 move_uploaded_file($_FILES["file"]["tmp_name"],$filename);//将临时地址移动到指定地址 } }else{echo"文件类型不对";}
}
现在我们看看效果怎么样:
这个img为空文件,一张图片都没有,现在选择一张图片
第一张,点击选择后,再看看img文件
看看现在上传成功了
php做图片上传功能相关推荐
- php隐藏做上传图片,php做图片上传功能
无标题文档 文件上传 /> //js本地图片预览,兼容ie[6-9].火狐.Chrome17+.Opera11+.Maxthon3 function PreviewImage(fileObj, ...
- php 点击选择图片上传,php做图片上传功能
无标题文档 文件上传 /> //js本地图片预览,兼容ie[6-9].火狐.Chrome17+.Opera11+.Maxthon3 function PreviewImage(fileObj, ...
- Smiditor实现图片上传功能
Simditor 是 Tower 开源的一个基于浏览器所见即所得的文本编辑器. 相比传统的编辑器它的特点是: 功能精简,加载快速 输出格式化的标准 HTML 每一个功能都有非常优秀的使用体验 兼容的主 ...
- 富文本编辑器三种不同图片上传功能
最近在集成富文本和fastDFS文服做图片上传,找了写相关资料,感觉官网的比较全也比较杂.刚好看到一片 好的文章,然后我就转载并对不太详细的地方进行了一定的修改并新添加了一种前后端分离的方法.各位小伙 ...
- 用jsp实现简单的图片上传功能
用jsp实现简单的图片上传功能 1 先做一个页面,选择上传的图片 <body><form action="uploadServlet" enctype=" ...
- 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。
在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...
- ckeditor java 上传_java使用CKEditor实现图片上传功能
java如何使用ckeditor实现图片上传功能,具体内容如下 1.根据实际需要下载指定的ckeditor 2.删除文件ckeditor/plugins/image/dialogs/image.js预 ...
- 关于微信内置浏览器,打开图片上传功能,调用的问题
关于微信内置浏览器,打开图片上传功能,调用的问题 前段时间,项目完结测试的时候,同事打开魅族手机测试,无意中发现一个奇葩的问题! 描述: 显示的是文件系统,列表式的,没有调用相机的功能图标,为什么呢? ...
- (转)淘淘商城系列——实现图片上传功能
http://blog.csdn.net/yerenyuan_pku/article/details/72808000 上文我们使用FastDFS-Client进行了简单的文件上传操作测试,淘淘商城项 ...
最新文章
- NIO实例:Selector+SocketChannel实现多人聊天
- vim中使用split
- 微信小程序禁止页面上下滑动;uni-app微信小程序禁止页面上下滑动;uni-app小程序上下滑动;
- 关于win安装vir的临时笔记
- 要取代 Node.js 的 Deno 还活着吗?
- 揭露一种通过网络实施ATM诈骗的手段!
- android nfc开发_意法半导体NFC产品线完整 满足多元应用_企业动态_新闻中心
- HDU 1074 Doing Homework【状态压缩DP】
- 闪迪内存卡软件测试,闪迪存储卡怎么样
- 非常友好的PHP后台模板
- orcadcapture安装_电路原理图设计软件(OrCAD Capture CIS 中文版) 16.6 免费安装版
- SpringBoot上传xlsx并批量导入
- php 减号,PHP编码转换减号(连接符)无法转换问题
- java中后台的跳转_java后台跳转
- python获取当前系统的日期_Python获取当前日期时间
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.7 高阶组件...
- 技术视频下载地址分享
- tomcat脚本启动正常,服务无法启动,特定错误代码1
- html css文字标题特效,CSS 实现漂亮的大标题效果
- 查看SQL server端口