php获取html上传图片并保存至本地服务器
功能描述:我以获取图片为例,使用<input type="file">这个标签获取本地图片(文件)并且能够显示在当前页面,然后上传至本地服务器,并存进数据库(存储的是图片的地址,并不是文件本身)。
其中,显示图片的js代码是参考网上一位朋友发的资源,叫什么我也忘记了,在这里先申明一下。
下面直接上代码:
1.基本的页面代码+js
<script> function setImagePreview() { var docObj=document.getElementById("file"); var imgObjPreview=document.getElementById("preview"); if(docObj.files && docObj.files[0]) { //火狐下,直接设img属性 imgObjPreview.style.display = "block"; imgObjPreview.style.width = "200px"; imgObjPreview.style.height = "200px"; //imgObjPreview.src = docObj.files[0].getAsDataURL(); //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式 imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]); } else { //IE下,使用滤镜 docObj.select(); var imgSrc = document.selection.createRange().text; var localImagId = document.getElementById("localImag"); //必须设置初始大小 localImagId.style.width = "300px"; localImagId.style.height = "120px"; //图片异常的捕捉,防止用户修改后缀来伪造图片 try { localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; } catch(e) { alert("您上传的图片格式不正确,请重新选择!"); return false; } imgObjPreview.style.display = "none"; document.selection.empty(); } return true; } </script> <html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" onchange="javascript:setImagePreview();"> <div id="localImag"><img id="preview" width=-1 height=-1 style="diplay:none" /></div> <br> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
2.php代码:
<?php session_start(); $_SESSION["userid"]="zxh"; if (1)//这个地方可以填写上传文件的限制,比如格式大小要求等,为了方便测试,这里没有写上传限制。 { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />";//获取文件返回错误 } else { //打印文件信息 echo "Upload: " . $_FILES["file"]["name"] . "<br />";//获取文件名 echo "Type: " . $_FILES["file"]["type"] . "<br />";//获取文件类型 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";//获取文件大小 echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";//获取文件临时地址 //自定义文件名称 $array=$_FILES["file"]["type"]; $array=explode("/",$array); $newfilename="new_name";//自定义文件名(测试的时候中文名会操作失败) $_FILES["file"]["name"]=$newfilename.".".$array[1]; if (!is_dir("upload/".$_SESSION["userid"]))//当路径不穿在 { mkdir("upload/".$_SESSION["userid"]);//创建路径 } $url="upload/".$_SESSION["userid"]."/";//记录路径 if (file_exists($url.$_FILES["file"]["name"]))//当文件存在 { echo $_FILES["file"]["name"] . " already exists. "; } else//当文件不存在 { $url=$url.$_FILES["file"]["name"]; move_uploaded_file($_FILES["file"]["tmp_name"],$url); echo "Stored in: " . $url; } } } else { echo "Invalid file"; } ?> <html> <body> <br><br> <img src="<?php echo $url;?>"> </body> </html>
3.下面贴一些效果图:
a.原始页面:
b.选择文件后效果:
c.未上传图片是的文件夹情况:
d.上传图片后的文件夹情况:
e.上传完成后的页面显示:
存进数据库的步骤我就不多说了,既然能够获取到了该图片本地服务器的路径,直接将路径存入数据库即可,本来要存入图片进入数据库也是可以的,但这样会造成数据库负载过大,所以并没有这么使用,如果想保存图片至数据库的朋友,可以去网上查阅一下,我也查到过,以后有机会我在把传图片进数据库的代码贴出来吧。
这里我传图片是能成功的,其他文件没试过,也许其他格式的图片或者文件会有些小bug,如果有找出的来朋友希望能够指出来,大家一起讨论下。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: php远程抓取网站图片并保存
- 下一篇: php保存文章中远程图片到本地