-
php 图片上传并预览效果
本文章是一款图片上传代码,他可以把上传到服务器的图片在进行预览修改,如果是你想的你就可以保存了,不是可以删除再重新上传,实例代码如下:
- if(!isset($_session))session_start();
- /**2010-6-22
- * $data 数组类型 包含以下变量
- -------------------------------
- * $sub_type submit类型(upload:上传按钮 delete:删除按钮),默认upload
- * $file 通过表单获取的$_files['filename']数组
- * $img_tag_id 预览图片的<img>的id值
- * $img_dir 上传图片的目录
- * $max_file_size 单位m(兆),默认:1m
- * $type_array 允许的上传的图片类型(默认:image/pjpeg、image/jpeg、image/gif)
- **/
- function upload($data){
- if(!$data['file']){
- echo '<script>alert("file不能为空!");</script>';exit;
- }
- if(!$data['img_tag_id']){
- echo '<script>alert("预览图片标签id不能为空!");</script>';exit;
- }
- if(!$data['img_dir']){
- echo '<script>alert("图片上传目录不能为空!");</script>';exit;
- }
- if(!isset($data['max_file_size'])){
- $data['max_file_size'] = 1024 * 1024;
- }else{
- $data['max_file_size'] = $data['max_file_size'] * 1024 * 1024;
- }
- if(!isset($data['type_array'])){
- $data['type_array'] = array('image/pjpeg', 'image/jpeg', 'image/gif');
- }
- if(!isset($data['sub_type'])){
- $data['sub_type'] = 'upload';
- }
- $imgpath = '';
- if(isset($data['sub_type']) && $data['sub_type'] == 'delete'){
- if(isset($_session['name']) && $_session['name']){
- if(is_file($_session['imgpath'])){
- $b = unlink($_session['imgpath']);
- }
- unset($_session['name'], $_session['imgpath']);
- if(!isset($_session['name'])){
- echo '<script>alert("删除成功!");</script>';
- echo '<script>parent.document.getelementbyid("'.$data['img_tag_id'].'").style.display = "none";</script>';
- }else{
- echo '<script>alert("删除失败!");</script>';
- }
- }else{
- echo '<script>alert("没有稿件!");</script>';
- }exit;
- }
- if(isset($_session['imgpath']) && $_session['imgpath']){
- echo '<script>alert("稿件已经存在,要想重新上传请删除原来的稿件!");</script>';exit;
- }
- if(!in_array($data['file']['type'], $data['type_array'])){
- echo '<script>alert("稿件类型不匹配,请上传.jpg、.gif和.png格式的图片!");</script>';exit;
- }
- if($data['file']['size'] > $data['max_file_size']){
- echo '<script>alert("您上传的稿件过大,请选择2m以下的图片上传!");</script>';exit;
- }
- if(!is_dir($data['img_dir'])){
- @mkdir($data['img_dir'], 0777, true);
- }
- $imgpath = $data['img_dir'].'/'.date('his', time()).rand(100, 999).$data['file']['name'];
- $isupload = move_uploaded_file($data['file']['tmp_name'], $imgpath);
- if(!$isupload){
- echo '<script>alert("稿件上传失败,请尝试重新上传!");</script>';exit;
- }else{
- echo '<script>alert("稿件上传成功!");</script>';
- }
- $_session['name'] = $data['file']['name'];
- $_session['imgpath'] = $imgpath;
- return $imgpath;
- }
- /*test_start*/
- $sub_type = '';
- if(isset($_post['submit_upload']))$sub_type = 'upload';
- if(isset($_post['submit_delete']))$sub_type = 'delete';
- if($sub_type){//echo '<script>alert("'.$sub_type.'");</script>';exit;
- $data = array( 'sub_type' => $sub_type,
- 'file' => $_files['file'],
- 'img_tag_id' => 'picview',
- 'img_dir' => 'upload_img',
- );
- $imgpath = upload($data);
- }else{
- $imgpath = isset($_session['imgpath'])? $_session['imgpath']: '';
- }
- ?>
- <form action="ad.php" method="post" enctype="multipart/form-data" target="frame">
- <input type="file" name="file" class="input">
- <input type="submit" name="submit_upload" value="上 传">
- <input type="submit" name="submit_delete" value="删 除">
- <iframe id="frame" name="frame" width="0" height="0" marginwidth="0" frameborder="0" src="about:blank"></iframe>
- </form>
- <img id="picview" height="100" style="display:none;">
- //开源代码phpfensi.com
- <script>
- if("<?php echo $imgpath; ?>"){
- parent.document.getelementbyid("picview").src = "<?php echo $imgpath; ?>";
- parent.document.getelementbyid("picview").style.display = "block";
- }
- </script>
原文链接:http://www.phpfensi.com/php/20140909/5087.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式