elementUI图片上传前端及后端写法例子

说明

我们平时自己开发项目的时候会用到图片上传,这里就把之前写的一个例子整理一下,使用elementUI完成图片上传

 

后端写法

<?php
/**
* 图片上传接口
* @author 捕风阁 www.osuu.net
* @time 2020.5.20
*/
$key=$_POST['key'];
$upkey=1234;//实际开发中应从数据库获取
if($key != $upkey){
//这里是一个简略的key验证,防止接口被人抓取乱用
$result = array("status" => 100, "message" => "上传失败,上传key错误", "data" =>null);
}else{
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
// echo $_FILES["file"]["size"];
$extension = end($temp); // 获取文件后缀名
if($_FILES["file"]["size"] > 512000){// 大于 500 kb
$result = array("status" => 100, "message" => "图片不能大于500kb", "data" =>null);
}else if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && in_array($extension, $allowedExts)){
if ($_FILES["file"]["error"] > 0){
$result = array("status" => 100, "message" => "上传失败", "data" =>null);
}else{
//上传后的图片以时间戳重新命名
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . time().".png");
// echo(time().".png");
$result = array("status" => 200, "message" => "上传成功", "data" => time().".png");
}
}else{
$result = array("status" => 100, "message" => "图片格式不支持", "data" =>null);
}
}
echo(json_encode($result));
?>
<?php
/**
 * 图片上传接口
 * @author 捕风阁 www.osuu.net
 * @time 2020.5.20
 */
$key=$_POST['key'];
$upkey=1234;//实际开发中应从数据库获取

if($key != $upkey){
    //这里是一个简略的key验证,防止接口被人抓取乱用
  $result = array("status" => 100, "message" => "上传失败,上传key错误", "data" =>null);
}else{
    // 允许上传的图片后缀
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    // echo $_FILES["file"]["size"];
    $extension = end($temp);     // 获取文件后缀名
    if($_FILES["file"]["size"] > 512000){// 大于 500 kb
      $result = array("status" => 100, "message" => "图片不能大于500kb", "data" =>null);
    }else if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && in_array($extension, $allowedExts)){
      if ($_FILES["file"]["error"] > 0){
        $result = array("status" => 100, "message" => "上传失败", "data" =>null);
      }else{
            //上传后的图片以时间戳重新命名
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . time().".png");
        // echo(time().".png");
        $result = array("status" => 200, "message" => "上传成功", "data" => time().".png");
      }
    }else{
      $result = array("status" => 100, "message" => "图片格式不支持", "data" =>null);
    }
}
echo(json_encode($result)); 
?>
<?php /** * 图片上传接口 * @author 捕风阁 www.osuu.net * @time 2020.5.20 */ $key=$_POST['key']; $upkey=1234;//实际开发中应从数据库获取 if($key != $upkey){ //这里是一个简略的key验证,防止接口被人抓取乱用 $result = array("status" => 100, "message" => "上传失败,上传key错误", "data" =>null); }else{ // 允许上传的图片后缀 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); // echo $_FILES["file"]["size"]; $extension = end($temp); // 获取文件后缀名 if($_FILES["file"]["size"] > 512000){// 大于 500 kb $result = array("status" => 100, "message" => "图片不能大于500kb", "data" =>null); }else if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0){ $result = array("status" => 100, "message" => "上传失败", "data" =>null); }else{ //上传后的图片以时间戳重新命名 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . time().".png"); // echo(time().".png"); $result = array("status" => 200, "message" => "上传成功", "data" => time().".png"); } }else{ $result = array("status" => 100, "message" => "图片格式不支持", "data" =>null); } } echo(json_encode($result)); ?>

 

 

前端写法

官方文档:element

<el-upload
class="upload-demo"
:action="action"
:data="data"
:on-error="imgError"
:on-success="imgSuccess"
:before-remove="beforeRemove"
multiple
:limit="1"
:on-exceed="handleExceed"
:file-list="fileList"
>
export default {
data() {
return {
data: { key: "" },//key实际开发中请从后端获取
fileList: [],
action: "图片上传接口地址",
};
},
methods: {
//上传失败
imgError(err, file, fileList) {
this.$message.error(err);
},
imgSuccess(response, file, fileList) {
if (response.status == 200) {
this.$message({
message: response.message,
type: "success"
});
//response.data为返回的图片文件名,可将其写入数据库
//this.imgurl = response.data;
} else {
this.$message.error(response.message);
this.fileList = [];
}
},
handleExceed(files, fileList) {
this.$message.error("上传数量超过限制");
},
beforeRemove(file, fileList) {
return this.$message({
message: "删除成功",
type: "success"
});
},
}
};
    <el-upload
    class="upload-demo"
    :action="action"
    :data="data"
    :on-error="imgError"
    :on-success="imgSuccess"
    :before-remove="beforeRemove"
    multiple
    :limit="1"
    :on-exceed="handleExceed"
    :file-list="fileList"
    >   
    export default {
        data() {
          return {
            data: { key: "" },//key实际开发中请从后端获取
            fileList: [],
            action: "图片上传接口地址",
          };
        },
       
        methods: {
          //上传失败
          imgError(err, file, fileList) {
            this.$message.error(err);
          },
          imgSuccess(response, file, fileList) {
            if (response.status == 200) {
              this.$message({
                message: response.message,
                type: "success"
              });
              //response.data为返回的图片文件名,可将其写入数据库
              //this.imgurl = response.data;
            } else {
              this.$message.error(response.message);
              this.fileList = [];
            }
          },
      
          handleExceed(files, fileList) {
            this.$message.error("上传数量超过限制");
          },
          beforeRemove(file, fileList) {
            return this.$message({
              message: "删除成功",
              type: "success"
            });
          },
        }
      };
<el-upload class="upload-demo" :action="action" :data="data" :on-error="imgError" :on-success="imgSuccess" :before-remove="beforeRemove" multiple :limit="1" :on-exceed="handleExceed" :file-list="fileList" > export default { data() { return { data: { key: "" },//key实际开发中请从后端获取 fileList: [], action: "图片上传接口地址", }; }, methods: { //上传失败 imgError(err, file, fileList) { this.$message.error(err); }, imgSuccess(response, file, fileList) { if (response.status == 200) { this.$message({ message: response.message, type: "success" }); //response.data为返回的图片文件名,可将其写入数据库 //this.imgurl = response.data; } else { this.$message.error(response.message); this.fileList = []; } }, handleExceed(files, fileList) { this.$message.error("上传数量超过限制"); }, beforeRemove(file, fileList) { return this.$message({ message: "删除成功", type: "success" }); }, } };

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
Your dream is like a flower. if you water it patiently, the flower will come out beautifully.
即使是最简单的梦想,用心浇灌,也能开出绚烂的花
抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容