php实现文件上传的例子(附详细源码)
今天用PHP做了个文件上传工具,功能还是很完善滴,如下:
每个图片上传之后,都有自己的地址,改变原图位置或重命名时,将不会重复上传。
一、功能:
A:文件分类上传
B:生成相应的文件夹,如本例,选择团,生成文件夹tuan
C:点击图片,查看详细
二、HTML代码:
<div id="container"> <fieldset> <legend class="img"><img src="/static/imghwm/default1.png" data-src="css/logo.png" class="lazy" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" ></legend> <form action="" method="post" name="myform" id="myform" onsubmit="return false" enctype="multipart/form-data"> <strong>亲,请选择你要上传的文件</strong> <div class="file"><input type="file" id="fileToUpload" name="fileToUpload"></div> <select id="product"> <option value="" if echo> >请选择产品</option> <option value="tuan" if echo> >团</option> </select> <button id="postBtn">Submit</button> </form> <div id="info"></div> <div style="position:relative; top:40px; left:20px;"> <a id="loading" style="display:none"><img src="/static/imghwm/default1.png" data-src="css/loading.gif" class="lazy" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" ></a> </div> <a href="#" id="img_link" target="_blank"> <div id="img_url">buding</div> <br> <img class="preview" id="preview" src="" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" > </a> </fieldset> </div>
三、Javascript代码:
<script type="text/javascript"> $('#postBtn').click(function(){ $('#preview').hide(); $('#img_url').hide(); $('#loading') .ajaxStart(function(){ $(this).show(); }) .ajaxComplete(function(){ $(this).hide(); }); if($('#fileToUpload').val() == ""){ $('#info').html("亲,还没选择文件呢"); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); return false; } if($('#product').val() == ""){ $('#info').html("亲,还没选择产品呢"); $('#info').css("color","#e9af32"); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); return false; } var val = $('#product').val(); $.ajaxFileUpload({ url:'ajaxupload.php', secureuri:false, fileElementId:'fileToUpload', dataType: 'text', data:{product:val}, success: function (data, status) { if(data.search(/http:\/\//i) < 0 ){ $('#info').html(data); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); }else{ $('#info').html("您上传的文件为:<br/>"); $('#preview').attr("src",data); $('#img_link').attr("href",data); $('#img_url').html(data); $('#preview').show(); $('#img_url').show(); $('#preview').load(function(){ var imgH=$('#preview').height(); var jObject={"Url":data,"Height":imgH+228,"oid":"<?php echo @$_REQUEST['oid']; ?>"}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); }); } }, error: function (data, status, e){ $('#info').html(data+e); } }); }); </script>
四、PHP代码
<?phprequire_once ('config.php');if(empty($_FILES) || empty($_REQUEST)){ header('location:imgupload.php'); exit;}array_push($_FILES, $_REQUEST);$filename = 'fileToUpload';$product = @$_FILES[0]['product'];$today = date("Y-m-d");$time = date("YmdHis"); $year = date("Y");$month = date("m");$day = date("d");$img_path = $product.'/'.$year.'/'.$month.'/'.$day.'/';$destination_dir = ROOT_PATH.'/pic/'.$img_path.'/';if(!is_uploaded_file($_FILES[$filename]['tmp_name'])){//验证上传文件是否存在 echo "请选择你想要上传的图片"; exit;} if($product == "") {//选择产品 echo "请选择产品"; exit;} $files = $_FILES[$filename]; if($max_file_size < $files['size']){//判断文件是否超过限制大小 echo "图片太大了,传个小点的吧(<=2MB)"; exit; } if(!file_exists($destination_dir)) {//判断上传目录是否存在,不存在则创建一个. if(!mkdir($destination_dir,0777,true)) { echo "创建目录 {".$destination_dir."} 失败<可能是权限问题>"; exit; } } $type = pathinfo($files['name']); $type = strtolower($type["extension"]); $type =".".$type; $tmp_name = $files['tmp_name']; $md5file = md5_file($tmp_name);//生成md5文件 $new_name =$md5file.$type; $img_relat_path = $img_path.$new_name; $img_abs_path = $destination_dir.$new_name; $url = IMG_URL.$img_relat_path; //判断数据库中图片是否存在 $sql="select url from file_url where md5 = '".$md5file."'"; $res=$db->getOne($sql); if($res) { echo $res['url']; exit; } if(!move_uploaded_file ($files['tmp_name'], $img_abs_path)) {//上传文件 echo "上传文件失败"; exit; } //将图片存入数据库 $sql="insert into file_url(url,product,md5,create_time) values('".$url."','".$product."','".$md5file."','".$today."')"; $db->Execute($sql); $db->CloseDB(); echo $url;?>

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境