React - 允许用户从画廊或相机添加文件

Posted

技术标签:

【中文标题】React - 允许用户从画廊或相机添加文件【英文标题】:React - Allow user to add file from gallery or camera 【发布时间】:2019-05-29 20:30:48 【问题描述】:

我有一个 react-redux 站点,它允许用户从文件系统拖放文件, 现在我想让他们在移动设备上做同样的事情- 添加来自相机的屏幕截图或来自图库的文件。

对于桌面上的拖放,我使用的是react-dropzone package。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

您可以使用该文档中的代码: 它允许用户点击 DropZone 并打开一个文件选择器:

class Basic extends React.Component 
  constructor() 
    super()
    this.state = 
      disabled: true,
      files: []
    
  
​
  onDrop(files) 
    this.setState(files);
  
​
  toggleDisabled() 
    this.setState(
      disabled: !this.state.disabled
    )
  
​
  render() 
    const files = this.state.files.map(file => (
      <li key=file.name>
        file.name - file.size bytes
      </li>
    ))
​
    return (
      <section>
        <aside>
          <button
            type="button"
            onClick=this.toggleDisabled.bind(this)
          >
            Toggle disabled
          </button>
        </aside>
        <div className="dropzone">
          <Dropzone
            onDrop=this.onDrop.bind(this)
          >
            (getRootProps, getInputProps) => (
              <div ...getRootProps()>
                <input ...getInputProps() />
                 <p>Drop files here, or click to select files</p>
              </div>
            )
          </Dropzone>
        </div>
        <aside>
          <h4>Files</h4>
          <ul>files</ul>
        </aside>
      </section>
    );
  

​
<Basic />

【讨论】:

我知道如何使用这个组件——但它在移动设备上不适合我,这就是我所要求的 你是对的,问题出在我用于文件上传的服务器端代码上,而不是 react-dropzone 问题。所以这个问题可以结束了,谢谢。【参考方案2】:

正确的答案是 react-dropzone 确实运作良好(截至harish soni 的答案) 但这取决于移动版本: react-dropzone 使用 所有 移动设备不支持的 'input type="file"' html 元素。

为了更好地理解移动支持,请参阅here

【讨论】:

以上是关于React - 允许用户从画廊或相机添加文件的主要内容,如果未能解决你的问题,请参考以下文章

从相机或画廊获取全尺寸图片

从画廊或相机上传图像到rest api(错误:状态:错误,消息:用户不存在!,数据:空)

文件输入 - 接受来自安卓相机或画廊的图像

从android中的意图选择器中选择选项(相机或画廊)后请求权限

android使用片段从相机或画廊获取照片[重复]

如何将图像从相机保存到 iPhone 画廊中的特定文件夹?