將圖像同時上傳到 firebase 存儲和文本輸入到 firestore 時出錯

什利甚夏爾馬

我希望在提交表單時,選擇的文本輸入和文件應分別上傳到 firestore 集合和 firebase 存儲。我不明白為什麼它給我錯誤。

這是我的表格:

<form onSubmit={postSubmitHandler}>
    <input type="text" ref={postTextRef}/>
    <input type="file"/>
    <button type="submit">Upload</button>
</form>

這是我的處理程序函數:

function postSubmitHandler(e) {
    e.preventDefault();
    const file = e.target .files[0];

    console.log(file)

    if (!file) return;
    const sotrageRef = ref(storage, `posts/${file.name}`);
    const uploadTask = uploadBytesResumable(sotrageRef, file);

    uploadTask.on(
        "state_changed",
        (snapshot) => {
        const prog = Math.round(
            (snapshot.bytesTransferred / snapshot.totalBytes) * 100
        );
        setProgress(prog);
        },
        (error) => console.log(error),
        () => {
        getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
            console.log("File available at", downloadURL);
            firestore.collection('posts').doc(currentUser.uid).set({
                imageURL: downloadURL,
                caption: postTextRef.current.value,
                postedAt: new Date(),
                likes: 0
            })
        });
       }
    ); 
  }

我得到的錯誤是:

 TypeError: Cannot read properties of undefined (reading '0')
  47 | 
  48 |  function postSubmitHandler(e) {
  49 |    e.preventDefault();
> 50 |    const file = e.target.files[0];
  51 |  ^  

請幫我糾正這個錯誤,或者如果有其他好的方法,請告訴我。

弗蘭克·範·普費倫

由於您postSubmitHandler正在響應form提交的內容,因此它e.target指向表單元素 - 而不是input文件所在的位置。

快速修復:

const input = e.target.querySelector("input[type='file']");
const file = input.files[0];

此處的第一行從您的表單 ( e.target) 中選擇正確的輸入,然後用於訪問files用戶選擇的輸入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Laravel 8 將圖像上傳到存儲和數據庫時出現的問題

如何將從firebase存儲上傳的圖像保存到firestore數據庫中的currentUser

離線時將文件上傳到 Firebase 雲存儲時觸發代碼

當我將文件上傳到 Android 中的 Firebase 存儲時,進度條未更新

將數據從視圖傳遞到控制器時出錯

如何使用 reactjs 將圖像上傳到 Firebase web v9

如何使用 CDN 和版本 9.5.0 將圖像上傳到 Firebase?

使用 mocha 進行測試時導入 firebase-function-test 時出錯

嘗試將 gif 圖像寫入緩衝區時出錯

項目上傳到 Laravel 中的 cpanel 時圖像未顯示

將帶有一些其他數據的多張圖像存儲到 mongoDB 中時,只存儲一張圖像

嘗試將數組存儲到數據幀單元格時出錯

將數據庫傳輸到不同服務器時出現 Mysql 錯誤

將 django 項目部署到 heruku 時出錯

使用指定的 ContentType 將 Blob 上傳到 Azure Blob 存儲並同時覆蓋(.NET v12 SDK)?

使用 s3a 從 Hadoop 上傳到 S3 時出錯

從 ReactJS 上傳圖片到 Firebase v9 存儲

將 base64 上傳到 firebase 存儲並取回下載 url

C++20 範圍自定義視圖:嘗試通過管道傳輸到另一個視圖時出錯

將同一變量傳遞到 SQL 語句的多個部分時出錯

在變量中乘以輸入值時出錯

如何從雲函數將圖像存儲在 Firebase 存儲上

嘗試通過反應上傳到 Firebase 存儲。類型錯誤:無法讀取未定義的屬性(讀取 'ref')

附加到列時出錯(到 ndarray)

將迭代函數的輸出存儲到唯一表 KDB+/Q

如何將文本和圖像同時導入 pubspec yaml

為什麼使用向量存儲向量時會出現分段錯誤?

讀取存儲值時出現 Mmap() 分段錯誤

將反應應用程序部署到 netlify 時出現 NPM 錯誤