2017-07-19 58 views
1

var file = e.target.files [0];如何從輸入類型文件元素中獲取實際文件?

var file = e.target.value;

我正在使用React和Socket io嘗試通過聊天發送圖像。我所能得到的只是文件路徑而不是實際的文件。我從來沒有處理文件輸入,所以我想弄清楚如何獲取該文件並將其轉換爲可以通過套接字io發送的二進制字符串。

有幫助嗎?你會推薦哪些軟件包?

+0

您是否嘗試過現有的任何反應過來的包呢? https://www.npmjs.com/package/react-simple-file-input這一個似乎允許將輸入轉換爲二進制,給它一個鏡頭,讓我們知道它是怎麼回事 – Grandas

回答

0

您需要從輸入中獲取文件,例如您可以在onChange事件中消防處理程序。之後,您必須將文件從輸入(e.target.file [0]或循環,如果文件很多)到FileReaderFileReader methods並從文件中提取blob。接下來,你可以發送提取blob通過套接字,如果blob是大,你可以把它切成塊。

有例子的代碼:

`const readBlob = file => new Promise((resolve, reject) => { 
const reader = new FileReader(); 

    reader.onload = e => { 
    resolve(e.target.result); 
    }; 

    reader.readAsText(file); 
});` 

對不起,我的英語)

相關問題