说明
我们平时自己开发项目的时候会用到图片上传,这里就把之前写的一个例子整理一下,使用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-uploadclass="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
暂无评论内容