2017-07-19 86 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); 
});` 

对不起,我的英语)