亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React:將圖像上傳到 Cloudinary 時如何避免性能問題

React:將圖像上傳到 Cloudinary 時如何避免性能問題

慕后森 2023-11-12 22:12:04
我編寫了一段可以運行的代碼,但它不是杰作。它存在巨大的性能問題。我該如何處理呢?問題我的組件的性能存在問題:發送多張圖片很慢,當我發送5張圖片時,大約需要1-2分鐘。我如何確保照片僅在提交期間上傳到 Cloudinary?因為,例如,當用戶選擇照片 A,然后環顧四周并選擇照片 B 時,照片 A 和 B 都會上傳到云端。問題在將文件傳輸到 Cloudinary 時禁用添加相冊的按鈕是個好主意嗎?請幫助我解決這兩個問題,我想確保應用程序順利運行。太感謝了。const AddAlbum = () => {  const [fileUrl, setFileUrl] = useState();  // MultipleFiles  const [multipleFileUrl, setMultipleFileUrl] = useState([]);   // cloudnary upload api endpoint  const api_cloudinary =    "https://api.cloudinary.com/v1_1/cloudinary_name/image/upload";    // file upload  const handleSingleFileUpload = async (files) => {      const formData = new FormData();    formData.append("file", files[0]);    formData.append("upload_preset", "preset_number");    // send cloudinary image and presets info    const res = await fetch(api_cloudinary, {      method: "POST",      body: formData,    });    const file = await res.json();    console.log(file);    const fileUrl = await file.eager[0].url;    setFileUrl(fileUrl);  };  console.log(fileUrl);  // upload many files cloudnary  // For now max amount of files is 20  const handleMultipleFileUpload = async (files, amount) => {    const formData = new FormData();    for (let i = 0; i <= files.length; i++) {      let file = files[i];      formData.append("file", file);      formData.append("upload_preset", ""preset_number"");      const res = await fetch(api_cloudinary, {        method: "POST",        body: formData,      });      const cloudinaryFiles = await res.json();      console.log(cloudinaryFiles);      setMultipleFileUrl(cloudinaryFiles);    }  };  const handleSubmit = async (e) => {    e.preventDefault();    console.log(      `      Album name:${albumName}      color:${color}      Background Image: ${fileUrl}      files:${multipleFileUrl}      `    );  }; 
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

您只需要 1 個函數即可處理 1 個或多個圖像文件。您需要獲取每個文件的內容并將文件內容加載到表單數據中。示例代碼使用瀏覽器FileReader API讀取本地圖像文件的內容。查看 repl.it 中使用 vanilla JS 的代碼。如果有意義,您可以將其放入您的框架中。如果有疑問請告訴我。https://repl.it/@rpeltz/fe-upload#script.js

  reader.addEventListener(
        "load", function () {
                const fileContents = reader.result;

https://developer.mozilla.org/en-US/docs/Web/API/FileReader


查看完整回答
反對 回復 2023-11-12
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

我建議使用一個可以為您處理此問題的庫。在處理文件上傳時,您需要注意許多邊緣情況。

例如,react-uploady可以為你做到這一點。所以它很簡單:

import React from "react";

import Uploady from "@rpldy/uploady";

import UploadButton from "@rpldy/upload-button";


const CLOUD_NAME = "<your-cloud-name>";

const UPLOAD_PRESET = "<your-upload-preset>";


const App = () => (<Uploady

? ? destination={{?

? ? ? ? url: `https://api.cloudinary.com/v1_1/${CLOUD_NAME}/upload`,

? ? ? ? params: {

? ? ? ? ? ? upload_preset: UPLOAD_PRESET,

? ? ? ? }

? ? }}>

? ? <UploadButton/>

</Uploady>);

查看完整回答
反對 回復 2023-11-12
  • 2 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號