【教程】layui上传接口php代码_hifhf的博客-程序员宅基地

技术标签: upload  vue  php  html  javascript  

layui上传模块文档链接: https://www.layui.com/doc/modules/upload.html

实例也很漂亮:https://www.layui.com/demo/upload.html

上传接口得自己设置,代码如下:

var uploadInst = upload.render({
   elem: '#demo' //绑定元素
   ,url: 'upload.php' //上传接口
   ,done: function(res){
     //上传完毕回调
   }
   ,error: function(){
     //请求异常回调
   }
 });

upload.php 代码如下:

$lastname=get_extension($_FILES["file"]["name"]);  
    $imgname = time().rand().".".$lastname;
    $tmp = $_FILES["file"]["tmp_name"];
    $size = $_FILES["file"]["size"];   
	$oldimg= '';
    //图片尺寸不能超过3M
    if($size==0 || $size/1024/1024>3){
        echo '{  "errcode": 1  ,"msg": "'.$size.'"  ,"data": {    "src": "'.$imgname.'"  }    }';
    }
    else{
        $filepath = getcwd()."/../../upload/image/";
        $height = intval((getimagesize($tmp)[1]/getimagesize($tmp)[0])*110);
        $img = "../../upload/image/".$imgname;
        
        if(move_uploaded_file($tmp,$filepath.$imgname)){ 
        echo '{  "errcode": 0  ,"msg": "'.$oldimg.'"  ,"data": {    "src": "'.$imgname.'"  }    }';
//            //调整上传图片的大小  
			$lastname=strtolower($lastname);  
            thumb($img,$lastname);
        }
    }
    //获取扩展名
    function get_extension($file) 
    { 
        return pathinfo($file, PATHINFO_EXTENSION); 
    } 

    //用于对图片进行缩放
    function thumb($filename,$lastname,$width=260,$height=160){
        //获取原图像$filename的宽度$width_orig和高度$height_orig
        list($width_orig,$height_orig) = getimagesize($filename);
        //根据参数$width和$height值,换算出等比例缩放的高度和宽度
        if ($width && ($width_orig<$height_orig)){
            $width = ($height/$height_orig)*$width_orig;
        }else{
            $height = ($width / $width_orig)*$height_orig;
        }
 
        //将原图缩放到这个新创建的图片资源中
        $image_p = imagecreatetruecolor($width, $height);
        //获取原图的图像资源
        if($lastname=="jpg" || $lastname=="jpeg"){
            $image = @imagecreatefromjpeg($filename);
        }
        if($lastname=="png"){
            $image = @imagecreatefrompng($filename);
        }
        if($lastname=="bmp"){
            $image = @imagecreatefrombmp($filename);
        }
        if($lastname=="gif"){
            $image = @imagecreatefromgif($filename);
        }
        //使用imagecopyresampled()函数进行缩放设置
        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
 
        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)
        imagejpeg($image_p,$filename);
 
        imagedestroy($image_p);
        imagedestroy($image);
    }


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hifhf/article/details/107311569

智能推荐

基于VS2010下利用MFC编写软件控制安捷伦信号源_seize the chance2022的博客-程序员宅基地

关于MFC中的程控使用最近接触关于写《自动化测试软件》,里面用到了,需要实现频谱仪、信号源、工装测试设备的自动控制。所以,就把每天遇到的问题,和学到的知识,进行一个总结思考。...

spark核心-RDD编程指导_不知道方向只知道前行的博客-程序员宅基地

rdd-programming-guide官网地址:http://spark.apache.org/docs/latest/rdd-programming-guide.html本文是根据官网原文翻译简化,是个人在学习过程中消化所得,感觉可以作为初识spark的一个指导文档,也是spark的核心东西。Linking with Spark(准备使用spark)spark是基于scala...

fastboot 刷机遇到问题_苏西守护者的博客-程序员宅基地_fastboot cannot load

情况1 :Created filesystem with 11/716672 inodes and 84789/2866553 blockstarget reported max download size of 536870912 byteserasing 'userdata'...OKAY [  0.207s]sending 'userdata' (136718 KB)..

qt中clicked(bool checked)和toggled(bool checked)的区别_cgzhello1的博客-程序员宅基地

先来看qt文档的解释上面看出共同点是:当点击按钮时,状态信号都会被发送。不同点:clicked: this signal is not emitted if you call setDown,setChecked() or toggle().toggled:this may be the result of a user action, clic

java反射_wwy897803652的博客-程序员宅基地

一、预先需要掌握的知识(java虚拟机)  java虚拟机的方法区:        java虚拟机有一个运行时数据区,这个数据区又被分为方法区,堆区和栈区,我们这里需要了解的主要是方法区。方法区的主要作用是存储被装载的类 的类型信息,当java虚拟机装载某个类型的时候,需要类装载器定位相应的class文件,然后将其读入到java虚拟机中,紧接着虚拟机提取class 中的类型信息,将这些信...

微信小程序开发总结_李佳鹏-前端的博客-程序员宅基地_小程序appsecret的长度

微信小程序开发一、微信小程序小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。账号注册、开发工具下载注册:https://mp.weixin.qq.com/wxopen/waregister?action=step1工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtool...

随便推点

如何在DevExpress ASPxGridView中进行编辑_剑之风的博客-程序员宅基地

其它 | 作者:慧都控件网 | 2011-04-02 13:07:53| 阅读 2660次 有用 (4) 评论 (0) 收藏概述:本文主要介绍如何在DevExpress ASPxGridView中进行编辑,希望对大家有帮助。注意:想让GridView支持修改功能,必须指定KeyFieldName展示编辑按钮列

sparkcore-sparksql数据清洗_weixin_46466052的博客-程序员宅基地_spark \001分隔符

数据格式原格式日期时间种类监测站1数据监测站…数据StringIntStringDoubleDouble数据清洗PM2.5表、O3表…时间监测站数据String(“yyyy-MM-dd-HH“)StringDouble这样会出现大量数据冗余但是去掉了空值,并且以时间和监测站为主键更加容易操作。源数据表节选:datehourtype1001A1002A201501021AQI117852

Back Track5学习笔记_weixin_34414650的博客-程序员宅基地

1.BT5默认用户名:root.密码:toor(公司是yeslabccies)2.进入图形化界面命令:startx3.更改密码:sudo passwd root扫描工具第一部分网络配置:4.网络配置文件有两个:/etc/network/interfaces和/etc/resolv.conf前一个存放网卡接口、IP、子网掩码等,后一个主要是存放DNS。5.查看IP...

给Cocos2dx3.10作常侍~_starcat2002的博客-程序员宅基地

最近辞职接外包,当然是做手游的,之前有一点Cocos2dx的使用经验,大部分是配置好的环境或者找人配的。如今要自己一个人配,确实走了不少弯路。嘛,先说一下最想实现又是最难实现的Cocos2dx3.10配Andriod Studio吧。Cocos new 项目后有个proj.android-studio文件夹,我以为直接导入就可以用了,没想到各种编译不过,各种Cocos2dx已经停止运行

Rete算法_徐小妖的博客-程序员宅基地

1、算法简介Rete算法是Charles Forgy在1979年的论文中首次提出的,针对基于规则知识表现的高效模式匹配算法,就目前来说,大部分规则引擎还是基于rete算法作为核心,但都有所改进,比如drool,jess等。Rete算法有两个特点使其优于传统的模式匹配算法:1)状态保存。事实库的每次变化,其匹配后的状态都被保存在alpha和beta节点中。在下一次事实库发生变化时,绝

C/C++通过COM调用.NET托管程序集的实现_w_s_q的博客-程序员宅基地

<br />在.NET托管程序集中,调用非托管的win32 dll 可以通过DllImport 或者Interop中的 P/Invoke 技术将非托管dll生成托管的dll来访问;但反过来,如何在非托管环境下(如C/C++)调用托管的.NET程序集呢?用COM技术就是该问题的一种解决方法:<br />(1) 首先,创建一个.NET的C# 类库解决方案,并添加两个类,IMyInterface和MyMethods:<br />接口类 IMyInterface.cs (用于生成COM接口)<br /><br />