reactjs - 如何从输入类型文件元素获取实际文件?

标签 reactjs input socket.io

var file = e.target.files[0];

var file = e.target.value;

我正在使用 React 和 Socket io 尝试通过聊天发送图像。我所能得到的只是文件路径而不是实际的文件。我从未处理过文件输入,因此我试图弄清楚如何获取该文件并将其转换为可以通过套接字 io 发送的二进制字符串。

帮忙?您会推荐什么包吗?

最佳答案

您需要从输入获取文件,例如您可以在 onChange 事件上触发处理程序。之后,您必须将文件从输入(e.target.file[0] 或循环,如果文件很多)放入 FileReader并从文件中提取 blob。接下来,您可以通过套接字发送提取的blob,如果blob太大,您可以将其切成 block 。

有代码示例:

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

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

  reader.readAsText(file);
});

对不起我的英语!)

关于reactjs - 如何从输入类型文件元素获取实际文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45202237/

相关文章:

node.js - React Native 找不到模块

javascript - 导出服务器进行集成测试时出现 React Jest 问题

reactjs - JSX 属性中的 Lambda 是反模式吗?

debugging - 在 Xcode 4 的调试控制台中使用输入函数 "scanf"时

javascript - Html5 - 删除插入不完整日期时输入日期的镶边错误

html - 尝试并排获取两个 HTML 输入

javascript - C# UWP 中的发射格式

django - 使用 React 前端和 Django Rest 框架后端部署网站

javascript - 当日期选择器关闭时调用函数,当我仅单击日期选择器外部时

ios - 模块 'SocketIO' 未使用库进化支持进行编译;使用它意味着无法保证框架的二进制兼容性