最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react將文件轉(zhuǎn)為base64上傳的示例代碼

 更新時間:2023年09月06日 08:31:52   作者:ATWLee  
本文主要介紹了react將文件轉(zhuǎn)為base64上傳的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

需求

將圖片、pdf、word、excel等文件進行上傳。圖片、pdf等調(diào)接口A、word、excel等附件調(diào)接口B。接口關(guān)于文件是base64格式的參數(shù)

業(yè)務(wù)場景

上傳資源,區(qū)分影像與附件

邏輯思路

  • 使用原生input標簽,type='file',進行上傳
  • 上傳后的回調(diào),對文件進行分類,影像與附件
  • 對文件進行base64編碼
  • 執(zhí)行接口進行上傳

代碼實現(xiàn)

點擊input進行上傳,選擇文件后執(zhí)行onChange回調(diào)

<input
  type="file"
  multiple
  ref={uploadInputRef}
  onChange={uploadFileOnChange}
 />

對文件進行分類,我這里是通過type去判斷的

export const uploadFileOnChange = async (e: ChangeEvent<HTMLInputElement>) => {
? const files = e.target.files;
? // 將影像以及附件分類
? const images: File[] = [];
? const attachments: File[] = [];
? for (const iterator of files ?? []) {
? ? if (
? ? ? iterator.type.includes('sheet') ||
? ? ? iterator.type.includes('excel') ||
? ? ? iterator.type.includes('csv') ||
? ? ? iterator.type.includes('word')
? ? ) {
? ? ? attachments.push(iterator);
? ? } else {
? ? ? images.push(iterator);
? ? }
? }
};

對文件進行base64編碼

async function readFileAsDataURL(file: Blob) {
? const result_base64 = await new Promise<string>((resolve) => {
? ? const fileReader = new FileReader();
? ? fileReader.readAsDataURL(file);
? ? fileReader.onload = () =>
? ? ? typeof fileReader.result === 'string' && resolve(fileReader.result);
? });
? return result_base64.split('base64,')[1];
}
export const uploadFileOnChange = async (e: ChangeEvent<HTMLInputElement>) => {
? const files = e.target.files;
? // 將影像以及附件分類
? const images: File[] = [];
? const attachments: File[] = [];
? for (const iterator of files ?? []) {
? ? if (
? ? ? iterator.type.includes('sheet') ||
? ? ? iterator.type.includes('excel') ||
? ? ? iterator.type.includes('csv') ||
? ? ? iterator.type.includes('word')
? ? ) {
? ? ? attachments.push(iterator);
? ? } else {
? ? ? images.push(iterator);
? ? }
? }
? const imageData: ImageData[] = [];
? const affixData: AffixData[] = [];
? for (const i of images) {
? ? const imgBase64 = await readFileAsDataURL(i);
? ? imageData.push({
? ? ? name: i.name,
? ? ? imgBase64,
? ? });
? }
? for (const i of attachments) {
? ? const affixBase64 = await readFileAsDataURL(i);
? ? affixData.push({
? ? ? name: i.name,
? ? ? affixBase64,
? ? });
? }
? return {
? ? imageData,
? ? affixData,
? };
};

拿到上一步返回的數(shù)據(jù)調(diào)接口

到此這篇關(guān)于react將文件轉(zhuǎn)為base64上傳的示例代碼的文章就介紹到這了,更多相關(guān)react將文件轉(zhuǎn)為base64進行上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React新文檔切記不要濫用effect

    React新文檔切記不要濫用effect

    這篇文章主要為大家介紹了React新文檔濫用effect出現(xiàn)的問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • React淺析Fragments使用方法

    React淺析Fragments使用方法

    這篇文章主要介紹了React Fragments使用方法,關(guān)于react Fragments,React中一個常見模式是為一個組件返回多個元素。Fragments 可以讓你聚合一個子元素列表,并且不在DOM中增加額外節(jié)點
    2022-12-12
  • React?+?ECharts動態(tài)折線圖完整實現(xiàn)代碼

    React?+?ECharts動態(tài)折線圖完整實現(xiàn)代碼

    ECharts作為國內(nèi)最流行的可視化庫,其實內(nèi)置了非常強大的線條特效和動畫能力,這篇文章主要介紹了React + ECharts動態(tài)折線圖的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-03-03
  • React18中請求數(shù)據(jù)的官方姿勢適用其他框架

    React18中請求數(shù)據(jù)的官方姿勢適用其他框架

    這篇文章主要為大家介紹了官方回答在React18中請求數(shù)據(jù)的正確姿勢詳解,同樣也適用其他框架,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 詳解如何封裝和使用一個React鑒權(quán)組件

    詳解如何封裝和使用一個React鑒權(quán)組件

    JavaScript?和?React?提供了靈活的事件處理機制,特別是通過利用事件的捕獲階段來阻止事件傳播可以實現(xiàn)精細的權(quán)限控制,本文將詳細介紹這一技術(shù)的應(yīng)用,并通過實踐案例展示如何封裝和使用一個?React?鑒權(quán)組件,需要的可以參考下
    2024-03-03
  • react中使用Modal.confirm數(shù)據(jù)不更新的問題完美解決方案

    react中使用Modal.confirm數(shù)據(jù)不更新的問題完美解決方案

    這篇文章主要介紹了react中使用Modal.confirm數(shù)據(jù)不更新的問題解決方案,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • React+TS+IntersectionObserver實現(xiàn)視頻懶加載和自動播放功能

    React+TS+IntersectionObserver實現(xiàn)視頻懶加載和自動播放功能

    通過本文的介紹,我們學(xué)習(xí)了如何使用 React + TypeScript 和 IntersectionObserver API 來實現(xiàn)一個視頻播放控制組件,該組件具有懶加載功能,只有在用戶滾動頁面且視頻進入視口時才開始下載視頻資源,需要的朋友可以參考下
    2023-04-04
  • React Electron生成桌面應(yīng)用過程

    React Electron生成桌面應(yīng)用過程

    這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應(yīng)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • React Native 如何獲取不同屏幕的像素密度

    React Native 如何獲取不同屏幕的像素密度

    這篇文章主要介紹了 React Native 如何 獲取不同屏幕的像素密度的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • react子組件接收的props賦值給state的陷阱問題

    react子組件接收的props賦值給state的陷阱問題

    這篇文章主要介紹了react子組件接收的props賦值給state的陷阱問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

九江县| 普安县| 安塞县| 阿荣旗| 洛宁县| 静宁县| 同德县| 满洲里市| 白朗县| 兰溪市| 祁东县| 綦江县| 澳门| 库尔勒市| 合江县| 阳春市| 当阳市| 湖南省| 惠水县| 濮阳市| 永泰县| 阿荣旗| 余庆县| 潢川县| 西乌珠穆沁旗| 亳州市| 阿合奇县| 沂南县| 尚义县| 河池市| 句容市| 东乌| 吴旗县| 天津市| 大港区| 长丰县| 卓资县| 泸溪县| 德令哈市| 杨浦区| 雷州市|