Vue3實現上傳照片以及回顯

Vue3實現上傳照片以及回顯

  • 一、安裝Element Plus
  • 二、案例
    • 1、基本示例
  • 三、進階案例
    • 1、代碼
    • 2、代碼解釋
      • 1、上傳接口展示
      • 2、查詢接口展示
      • 組件屬性
    • 3、效果展示


一、安裝Element Plus

使用 Element Plus 組件庫來實現上傳照片和回顯同樣很簡單,你可以按照以下步驟進行:

  1. 安裝 Element Plus:首先,確保你已經安裝了 Element Plus。你可以在 Vue 3 項目中使用 npm 或 yarn 來安裝 Element Plus:

    npm install element-plus --save
    

    或者

    yarn add element-plus
    
  2. 引入 Element Plus:在你的 Vue 3 項目中的 main.js 文件中引入 Element Plus 并注冊組件庫中的組件:

    import { createApp } from 'vue'
    import ElementPlus from 'element-plus';
    import 'element-plus/lib/theme-chalk/index.css';const app = createApp(App)
    app.use(ElementPlus)
    app.mount('#app')
    
  3. 創建上傳組件:在 Vue 3 中使用 Element Plus 的 Upload 組件來實現上傳照片功能,同時使用 Image 組件來顯示上傳的照片。

  4. 處理文件上傳:在上傳組件中,可以使用 Upload 組件的 file-list 屬性來綁定一個文件列表,當用戶上傳文件時,該列表會自動更新。你可以在 Image 組件中使用這個文件列表來顯示上傳的照片。

二、案例

1、基本示例

下面是一個簡單的示例代碼,演示了如何在 Vue 3 中使用 Element Plus 實現上傳照片以及回顯:

<template><div><el-uploadaction="#改為你上傳服務URL路徑" :file-list="fileList":on-change="handleFileUpload"><el-button type="primary">點擊上傳</el-button></el-upload><el-imagev-if="imageUrl":src="imageUrl"style="width: 100px; height: 100px; margin-top: 10px;"></el-image></div>
</template><script>
import { ref } from 'vue';export default {name: 'PhotoUpload',setup() {const fileList = ref([]);const imageUrl = ref('');const handleFileUpload = (file, fileList) => {imageUrl.value = URL.createObjectURL(file.raw);};return {fileList,imageUrl,handleFileUpload};}
};
</script>

在這個示例中,我們使用了 Element Plus 的 Upload 組件來實現文件上傳,通過綁定 file-list 屬性來控制文件列表。在 handleFileUpload 方法中,我們監聽 Upload 組件的 change 事件,獲取上傳的文件,并使用 URL.createObjectURL 方法生成一個臨時的 URL,然后將其賦值給 imageUrl 數據,以在頁面上顯示照片。

三、進階案例

1、代碼

<template><!-- 提交表單 --><div><el-form-item label="頭像"><el-uploadclass="avatar-uploader"action="#改為你上傳的文件路徑":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload":data="imageFormData"name="files"accept="image/*"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon></el-upload></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">提交</el-button></el-form-item></el-form></div>
</template><script  setup>
import { ref, onMounted } from "vue";
import { ElMessage } from "element-plus";
import { Plus } from "@element-plus/icons-vue";
import axios from "axios";//提交表單數據
const formInline = ref({});
//照片
const imageUrl = ref("");
//上傳圖片表單
const imageFormData = ref({type: "picture",
});
//記錄圖片ID
const imageId = ref("");const handleAvatarSuccess = (response, file) => {console.log("response=", response);console.log("file=", file);console.log("上傳成功后的id=", response.data[0]);imageId.value = response.data[0];//回顯圖片getImage(imageId.value);
};//調用圖片
const getImage = async (id) => {//根據ID調用接口獲取圖片try {const imageInfo = await axios.get("#改為你調用文件服務的接口地址" + id, {responseType: "blob",headers: {Accept:"image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",},}).then((response) => {const blob = new Blob([response.data], { type: "image/*" });imageUrl.value = URL.createObjectURL(blob);});} catch (error) {console.error("獲取數據失敗", error);}
};//校驗文件
const beforeAvatarUpload = (rawFile) => {if (!rawFile.type.startsWith("image/")) {ElMessage.error("請上傳圖片!");return false;} else if (rawFile.size / 1024 / 1024 > 2) {ElMessage.error("圖片大小不能超過2MB!");return false;}return true;
};const onSubmit = () => {console.log("onSubmit");
};</script><style>
.avatar-uploader .el-upload {border: 1px dashed var(--el-border-color);border-radius: 6px;cursor: pointer;position: relative;overflow: hidden;transition: var(--el-transition-duration-fast);
}.avatar-uploader .el-upload:hover {border-color: var(--el-color-primary);
}
.el-icon.avatar-uploader-icon {font-size: 28px;color: #000;width: 100px;height: 100px;text-align: center;
}
.avatar-uploader .avatar {width: 100px;height: 100px;
}
</style>

2、代碼解釋

1、上傳接口展示

  1. 接口中要求傳入表單數據因此我使用了data屬性。
  2. 接口要求文件的屬性名為files,因此我用了name屬性默認值為file,我重新賦值files。
  3. 這里的文件上傳應用場景是圖片因此我用了accept屬性配置內容為屬性。
    在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

2、查詢接口展示

回顯圖片我用了調用接口方式,返回的內容為圖片因此需要配置請求參數responseType
在這里插入圖片描述

組件屬性

在這里插入圖片描述

在這里插入圖片描述

3、效果展示

在這里插入圖片描述

在這里插入圖片描述


  1. 積極進取:勇敢邁出第一步,成功就在前方等待著你。
  2. 持之以恒:堅持不懈,才能攀登到人生的高峰。
  3. 自信自強:相信自己的能力,你就已經走出了成功的第一步。
  4. 心懷感恩:感恩生活中的每一個美好,懂得感恩,才能更加幸福。
  5. 勇敢面對:面對困難,不要退縮,因為你比困難更強大。
  6. 堅定目標:設立明確的目標,為之努力奮斗,成功必將如期而至。
  7. 學無止境:不斷學習、不斷進步,才能不斷提升自我。
  8. 團結合作:團結一心,共同進步,困難會迎刃而解。
  9. 積極樂觀:樂觀面對生活,陽光總在風雨后。
  10. 勤奮拼搏:勤奮是通往成功的唯一道路,拼搏是成功的最好伴侶。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15197.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用棧實現隊列(C語言)

目錄 題目題目分析 代碼棧的實現結構體。棧的初始化棧的銷毀 入棧刪除查找頂部數據判空 答案結構體初始化插入數據刪除數據獲取隊列開頭元素判空銷毀棧 題目 題目分析 鏈接: 題目 請你僅使用兩個棧實現先入先出隊列。隊列應當支持一般隊列支持的所有操作&#xff08;push、po…

數據庫查詢中——having與where的用法

數據庫查詢中——having與where的用法 HAVING 子句在 SQL 中主要用于與 GROUP BY 子句一起使用&#xff0c;以過濾聚合函數的結果。當你使用 GROUP BY 對數據進行分組&#xff0c;并希望基于這些分組后的數據進一步過濾時&#xff0c;你會使用 HAVING 子句。 HAVING 子句通常與…

pyside6下沒有designer.exe、pyside6-uic.exe等

使用conda安裝的pyside6&#xff08;conda install pyside6&#xff09;&#xff0c;發現pyside6目錄下沒有designer.exe、pyside6-uic.exe等&#xff1b;designer.exe在Miniconda3/Library/bin下 pyside6-uic.exe、pyside6-rcc.exe在Miniconda3\Scripts下 但是 使用pip安裝…

企業內網自建yum源 倉庫 | rsync同步方案

文章目錄 1.背景概述2.獲取軟件文件2.1 準備同步腳本如下 2.2 準備例外文件清單2.3 統計源端大小2.3 運行腳本開始同步文件 3. 創建網頁服務3.1 安裝nginx并啟用3.2 修改ngnix配置文件 4 創建repo索引和客戶文件4.1 創建repo索引4.2 創建客戶端文件4.3 客戶端下載repo文件 1.背…

用 Python 編寫網絡爬蟲:從網頁獲取數據并存儲到 Excel 文件

在本篇博客中,我們將介紹如何使用 Python 編寫一個簡單的網絡爬蟲,用于從網頁中提取數據,并將這些數據存儲到 Excel 文件中。我們將使用 Python 中的一些庫來實現這個功能,包括 urllib.request、BeautifulSoup 和 openpyxl。 1. 網絡爬蟲的基本原理 網絡爬蟲是一種程序,…

【MyBatis】MyBatis解析全局配置文件源碼詳解

目錄 一、前言 思維導圖概括 二、配置文件解析過程分析 2.1 配置文件解析入口 2.2 初始化XMLConfigBuilder 2.3 XMLConfigBuilder#parse()方法&#xff1a;解析全局配置文件 2.3.1 解析properties配置 2.3.2 解析settings配置 2.3.2.1 元信息對象&#xff08;MetaClas…

解決移植Metasploitable3到VM虛擬機無網絡的問題

第一步 導入后不要開機&#xff0c;先在虛擬機設置里面將原有的兩個網絡適配器移除。 第二步 接著在選項里面&#xff0c;在客戶機操作系統里面&#xff0c;選擇Microsoft Windwos(W)&#xff0c; 版本選擇Windows Server 2008 R2 x64 第三步 先打開虛擬機&#xff0c;然后…

Python_文件操作_學習

目錄 一、關于文件的打開和關閉 1. 文件的打開 2.文件的關閉 二、文件的讀取 1. 文件的讀_r 2. 使用readline 3.使用readlines 三、文件的寫入 1. 文本的新建寫入 2.文本的追加寫入 四、文件的刪除和重命名 1.文件的重命名 2.文件的刪除 五、文件的定位讀寫 1.t…

RK 11.0 多屏模式下修改鼠標進入方式

要求&#xff1a;主屏在左&#xff0c;副屏在右。這種排列情況下鼠標僅可通過主屏的最右側移入副屏的最左側&#xff0c;或從副屏的最左側移入主屏最右側。 1.RK默認設計 1.1 RK的代碼設計是當sys.mouse.presentation1時&#xff0c;鼠標在屏幕邊緣的時候就會移入另一個屏幕 …

CISP-PTE筆記整理

目錄 漏洞基礎代碼合集 網安基礎 常見名詞 信息收集 環境和變量的配置 HTTP請求頭基礎 HTTP基礎知識 MySql基礎語法 各系統的敏感目錄路徑 工具使用 Hackbar的tips java下載配置 Xray下載配置&使用 burp爆破賬號密碼和C段&注意事項 SqlMap爆破&創建…

Unity Miscellaneous入門

概述 在Unity中有非常多好用的組件&#xff0c;也是Unity為我們提供的方便的開發工具&#xff0c;它的功能可能不是主流的內容&#xff0c;比如渲染&#xff0c;音樂&#xff0c;視頻等等&#xff0c;所有Unity把這些內容統一歸到了一個雜項文件組中。 Unity組件入門篇總目錄-…

Python線程

Python線程 1. 進程和線程 先來了解下進程和線程。 類比&#xff1a; 一個工廠&#xff0c;至少有一個車間&#xff0c;一個車間中至少有一個工人&#xff0c;最終是工人在工作。 一個程序&#xff0c;至少有一個進程&#xff0c;一個進程中至少有一個線程&#xff0c;最終…

langchain實戰-從0到1搭建ai聊天機器人

介紹 當前&#xff0c;人工智能大模型公司如雨后春筍般迅速涌現&#xff0c;例如 OpenAI、文心一言、通義千問等&#xff0c;它們提供了成熟的 API 調用服務。然而&#xff0c;隨之而來的是不同公司的繁瑣協議接入過程&#xff0c;這讓許多開發者感到頭疼不已。有沒有一種統一…

SpringBoot + Redis實現對接口的限流

目錄 前言 什么是限流&#xff1f; 實現限流 創建一個注解類 接著創建一個切面類 前言 在項目中&#xff0c;對于接口的限流&#xff0c;是任何項目都必不可少的一部分&#xff0c;主要是為了防止用戶頻繁的發送請求&#xff0c;對服務器造成壓力。 另外一點就是防止外來攻…

C++之第八課

課程列表 今天我們來學一學C里的一些實用的東西。 1.域寬 說到域寬setw&#xff0c;就叒要加頭文件了。 #include<iomanip> 使用格式是&#xff1a; cout<<setw(5)<<"123"; setw括號里面可以改數字&#xff0c;后面就是輸出內容了&#xff…

COD論文筆記 Boundary-Guided Camouflaged Object Detection

動機 挑戰性任務&#xff1a;偽裝物體檢測&#xff08;COD&#xff09;是一個重要且具有挑戰性的任務&#xff0c;因為偽裝物體往往與背景高度相似&#xff0c;使得準確識別和分割非常困難。現有方法的不足&#xff1a;現有的深度學習方法難以有效識別偽裝物體的結構和細節&am…

MySQL索引、視圖練習

素材 1.學生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 學號&#xff0c;姓名&#xff0c;性別&#xff0c;年齡&#xff0c;所在系 Sno為主鍵 2.課程表&#xff1a;Course (Cno, Cname,) 課程號&#xff0c;課程名 Cno為主鍵 3.學生選課表&#xff1a;SC (Sno…

Home Credit - Credit Risk Model Stability

本篇是對Kaggle上Home Credit - Credit Risk Model Stability競賽中的開源代碼VotingClassifier Home Credit的解讀。原鏈接在VotingClassifier Home Credit (kaggle.com)。 %%writefile script.py import sys from pathlib import Path import subprocess import os import g…

人工智能的發展現狀,AI將如何改變IT行業,哪些職業將最先失業

文章目錄 一、人工智能的發展現狀1、技術進展與突破2、商業應用與市場3、挑戰與問題4、未來趨勢 二、AI將如何改變IT行業1、工作方式的轉變&#xff1a;2、未來發展的推動&#xff1a;3、用戶服務和體驗的提升&#xff1a;4、創新和轉型的推動&#xff1a;5、融入日常生活和工作…