首页 > 其他分享 >webman:前后端分离上传图片(v1.5.7)

webman:前后端分离上传图片(v1.5.7)

时间:2023-09-30 16:23:23浏览次数:31  
标签:el const webman res value data nickname v1.5 上传

一,vue:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 <template>   <div class="view_root">   <el-card shadow="never">       <el-form :model="ruleForm" :rules="saveRules" status-icon ref="refForm" label-width="100px" class="demo-ruleForm" style="width:600px;">         <el-form-item label="用户名" >         {{username}}       </el-form-item>         <el-form-item label="修改头像" ref="uploadElement">           <img @click="openimage()" style="width:160px;height:160px;border-radius: 10px;" :src="imgurl"  />           <input type="file" ref="hiddenfile" accept="image/*" @change="handleFile" class="hiddenInput"/>         </el-form-item>           <el-form-item label="昵称" prop="nickName" style="margin-bottom: 20px;">         <el-input  v-model="ruleForm.nickName" placeholder="请输入昵称" autocomplete="off" ></el-input>       </el-form-item>       <el-form-item>         <el-button type="primary" @click="submitForm()">提交</el-button>         <el-button @click="resetForm()">重置</el-button>       </el-form-item>     </el-form>   </el-card>   </div> </template> <script>   import {get,post} from "@/api/axios"; import {ElMessage} from "element-plus"; import {getUser, setUser} from "@/utils/user"; import VueEvent from "@/event/event"; import {ref,reactive} from "vue";   export default {   name: 'userInfo',   setup() {      //用户名    const username = ref("");    //头像地址    const imgurl = ref("");    //原始的头像地址    const origImgurl = ref("");    //选中的文件    const hiddenfile = ref(null);      //表单元素    const ruleForm = reactive({         nickName:'',       });    //表单    const refForm = ref(null);    //原始的昵称    const origNickname = ref("");     //得到用户信息并显示     const getuserinfo = () => {       get('/api/login/info',{       }).then(res => {         if (res.code == 0) {             username.value = res.data.username;           ruleForm.nickName = res.data.nickname;           origNickname.value = res.data.nickname;             imgurl.value = res.data.head;           origImgurl.value = res.data.head;           } else {            ElMessage.error("用户信息获取失败:"+res.msg);         }       }).catch((error) => {         // error         console.log(error)       })     }         getuserinfo();       //打开选择图片的窗口     const openimage = () => {       hiddenfile.value.click();     }       // 将头像显示为选中的文件     const handleFile = (e) => {         console.log(e)         let file = e.target.files[0];         let reader = new FileReader();         reader.readAsDataURL(file);         reader.onload = () =>{           imgurl.value = reader.result;           console.log(reader)         }     }       //validate的rule     const saveRules = {       nickName: [         {           required: true,           message: "请输入昵称",           trigger: "blur",         },         { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }       ],     };        //提交表单    const submitForm = () => {         //进行validate判断       refForm.value.validate(async (valid) => {         if (valid) {         try {         //得到文件       var file = hiddenfile.value.files[0];       //console.log(file);         var data = new FormData();       // 创建一个表单数据       data.append("file",file);       data.append("nickname",ruleForm.nickName);         post('/api/login/save',data).then(res => {         if (res.code == 0) {              //console.log(res.data);              imgurl.value = res.data.head;              //保存用户信息              let user = getUser();              user.nickname = res.data.nickname;              user.head =  res.data.head;              setUser(user);              //通知header更新               VueEvent.emit("refreshUser",'');               //提示               ElMessage.success("用户信息保存成功!");         } else {           ElMessage.error("用户信息保存失败:"+res.msg);         }       }).catch((error) => {         console.log(error)       })               } catch (error) {             console.log(error)             ElMessage.error("用户名或密码不正确");           }            }  //end valid       });     }       //重置form     const resetForm = () => {       //恢复原始图片       imgurl.value = origImgurl.value;       //清空文件选择框       hiddenfile.value.value = '';       //清空form的字段       refForm.value.resetFields();       //恢复原始昵称       ruleForm.nickName = origNickname.value;     }          return {          username,          imgurl,          hiddenfile,          ruleForm,          refForm,          saveRules,              openimage,          handleFile,          resetForm,          submitForm,        }   },   } </script> <style> .hiddenInput {   height: 160px;   width:160px;   background: #ff0000;   opacity: 0.5;   display: none; } .system_state {   padding: 10px; } </style>

二,后端php

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 <?php namespace app\controller;   use support\Request;   use result\Result; use jwt\JwtUtil;   use app\model\Staff as StaffModel;   class LoginController {     public function index(Request $request)     {         return response(__CLASS__);     }       //得到jwt信息,返回给线下     function getJwtInfo($userId,$nickName) {         //验证成功,生成jwt返回         $jUtil = new JwtUtil();         $token = $jUtil->createJwt($userId);         $res = ["tokenString"=>$token];         $host = "http://192.168.219.6/staffhead";         $res['head'] = $host."/".$userId.".jpg";         $res['nickname'] = $nickName;         return $res;     }       /**      * 保存用户信息      *      * @param  \think\Request  $request      * @return \think\Response      */     public function save(Request $request)     {         $staffId = $request->auth;         $nickname = $request->post('nickname','','string');           $staff = new StaffModel();         $upRow = ["nickname"=>$nickname];         $res = $staff-> updateByStaffId($upRow,$staffId);           //处理头像         $fileimg = request()->file('file');            if ($fileimg && $fileimg->isValid()) {             $basedir = '/var/www/html/imgstaffhead';             $destFile = $basedir."/".$staffId.".jpg";              $fileimg->move($destFile);          }           if($res !== false) {             $host = 'http://192.168.219.6/imgstaffhead';             $rand = rand(1000,9999);             $head = $host."/".$staffId.".jpg?rand=".$rand;             $res = ['head'=>$head,                 'nickname'=>$nickname];             return Result::Success($res);         }else{             return Result::ErrorCode(400,'数据保存出错');         }       }       /**      * 得到用户信息      *      * @return \think\Response      */     public function info(Request $request)     {         //得到数据库的用户信息         $staffId = $request->auth;         $staff = new StaffModel();         $rows = $staff->getOneByStaffId($staffId);         if (is_null($rows)) {             return Result::ErrorCode(100,'用户不存在');         }           $host = "http://192.168.219.6/imgstaffhead";         $rand = rand(1000,9999);         $rows['head'] = $host."/".$staffId.".jpg?rand=".$rand;           return Result::Success($rows);     } }

三,测试效果:

说明:刘宏缔的架构森林—专注it技术的博客,
网站:https://blog.imgtouch.com
原文: https://blog.imgtouch.com/index.php/2023/09/25/webman-qian-hou-duan-fen-li-shang-chuan-tu-pian/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]

四,查看webman的版本:

liuhongdi@lhdpc:/data/webman/imageadmin$ php webman version
Webman-framework v1.5.7

标签:el,const,webman,res,value,data,nickname,v1.5,上传
From: https://www.cnblogs.com/architectforest/p/17737950.html

相关文章

  • Spring boot 处理大文件上传完整代码
    这篇文章主要介绍了Spring boot 处理大文件上传,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 在Web上处理大文件上传时,可以使用以下方法来优化和处理大文件的上传:1.前端处理:在前端使用合适的文件上传库或组件,例......
  • Spring Boot 实现文件上传
    在实际项目中,文件上传是很多项目必不可少的一个功能。那么在SpringBoot项目中又是如何来实现文件上传功能的呢?一般来说,上传的文件可以保存到项目根目录下的某一文件夹中,但这样做显然是不太合适的。因此我们选择将文件上传到专门的文件服务器中。很多云计算厂商都提供文件存......
  • Spring Boot实现文件上传的两种方式
    最近的一个小项目里使用到了文件上传、下载功能,今天我打算梳理一下文件上传所涉及的技术及实现。内容主要包括两部分,如何通过纯Servlet的形式进行文件上传、保存(不通过Spring框架);另一部分是如何在SpringWebMVC中进行文件上传。01-从HTTP协议角度分析文件上传HTTP协......
  • Spring boot 处理大文件上传
    在Web上处理大文件上传时,可以使用以下方法来优化和处理大文件的上传:前端处理:在前端使用合适的文件上传库或组件,例如Dropzone.js、FineUploader等,它们提供了更好的用户体验和可靠的上传功能。使用分块上传(ChunkedUpload)技术,将大文件拆分成较小的块进行上传,以便提高上传的可靠性......
  • SpringBoot实现文件上传的多种方式
    我们平时在项目开发过程中,会遇到许多的文件上传与下载的需求,今天我们就来梳理一下文件上传的代码实现,基于SpringBoot快速搭建服务,集成文件上传功能,包括传统的文件上传方式,也拓展OSS对象存储方式。项目类型是Maven项目一、引入web依赖<dependency><groupId>org.springframework......
  • uniapp代码 上传发布钉钉小程序 流程
    uniapp代码发行到钉钉平台流程:1.下载hbuilder,打开项目,在setting.json里面运行配置里面配置支付宝小程序开发路径:类似D:/ProgramFiles/小程序开发者工具/小程序开发者工具.exe,然后发行-自定义发行-钉钉小程序,然后  2.会自动打开小程序开发工具,工具下载地址:https://open.di......
  • JavaWeb--文件上传和下载
    上传文件如何实现文件上传要实现Web开发中的文件上传功能,通常只需完成两步操作1、在Web界面中添加上传输入项2、在Servlet中读取上文件的表单页面,并保存到硬盘中文件上传的相关APIFiletem接口它只要用于Commons-FileUpload组件当中,主要是封装单个表单字段元素。DiskFiletemFacto......
  • java实现文件上传与下载
    一、对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦。 JSP代码,POST请求,表单必须设置为enctype="multipart/form-data"<spanstyle="font-size:14px;"><formaction="upload3"method="po......
  • Jemeter多文件上传(用SpringBoot简单写一个接口测试)
    写一个多文件上传接口使用Jemeter的HttpRequest组件实现多文件上传测试可以看到多文件实现方式只需要在参数里面添加多行就行了,参数名称写同一个。......
  • vue3项目结合ant design vue的upLoad组件实现上传和下载Excel文件
    1.上传文件  1.组件引入    import{ Button, Upload}from'ant-design-vue'  2.代码    <Upload      v-model:file-list="fileList"      name="file"      //限制文件格式      acce......