Reactjs 使用react dropzone的文件上载进度

Reactjs 使用react dropzone的文件上载进度,reactjs,react-dropzone,Reactjs,React Dropzone,使用react dropzone上载文件,我希望实现文件传输百分比或mbs数据传输等文件进度 以下是以下链接: this.onDrop(文件,this.props.uploadApi)}> {({getRootProps,getInputProps})=>{ 返回( {t(“资产:上传文件”)} {this.props.maxsizettle?t(“工作人员:上传工作人员文件大小”):t(“资产:上传文件大小”)} ); }} 如果要检测文件上载过程,可以使用XMLHttpRequest o

使用react dropzone上载文件,我希望实现文件传输百分比或mbs数据传输等文件进度

以下是以下链接:

this.onDrop(文件,this.props.uploadApi)}>
{({getRootProps,getInputProps})=>{
返回(

{t(“资产:上传文件”)} {this.props.maxsizettle?t(“工作人员:上传工作人员文件大小”):t(“资产:上传文件大小”)} ); }}
如果要检测文件上载过程,可以使用XMLHttpRequest

onDrop(acceptedFiles) {
  const formData = new FormData();
  formData.append('file', acceptedFiles[0])

  const xhr = new XMLHttpRequest();
  xhr.open(/*params*/);
  xhr.send(formData)
  xhr.upload.onprogress = event => {
   const percentages = +((event.loaded / event.total) * 100).toFixed(2);
   this.setState({percentages})
  };
  xhr.onreadystatechange = () => {
    if (xhr.readyState !== 4) return;
    if (xhr.status !== 200) {
     /*handle error*/
    }
    /*handle success*/
  };
}
您可以使用,它为您提供文件预览和即时上载进度,还可以为您处理上载

import'react dropzone uploader/dist/styles.css'
从“react Dropzone uploader”导入Dropzone
常量上载程序=()=>{
返回(
({url:'https://httpbin.org/post'})}//指定文件的上载参数和url
onChangeStatus={({meta,file},status)=>{console.log(status,meta,file)}
onSubmit={(files)=>{console.log(files.map(f=>f.meta))}
accept=“image/*,audio/*,video/*”
/>
)
}
上载可以取消或重新启动。用户界面是完全可定制的


完整披露:我编写此库是为了解决一些缺点和所需的大量样板文件。

以下是另一个基于turchak关于处理任意数量文件的答案的示例:

onDrop(acceptedFiles) {
  const formData = new FormData();
  for (const file of acceptedFiles) formData.append('file', file);

  const xhr = new XMLHttpRequest();
  xhr.upload.onprogress = event => {
   const percentage = parseInt((event.loaded / event.total) * 100);
   console.log(percentage); // Update progress here
  };
  xhr.onreadystatechange = () => {
    if (xhr.readyState !== 4) return;
    if (xhr.status !== 200) {
     console.log('error'); // Handle error here
    }
     console.log('success'); // Handle success here
  };
  xhr.open('POST', 'https://httpbin.org/post', true);
  xhr.send(formData);
}

你如何获得视频预览?在文档中找不到任何引用:(
onDrop(acceptedFiles) {
  const formData = new FormData();
  formData.append('file', acceptedFiles[0])

  const xhr = new XMLHttpRequest();
  xhr.open(/*params*/);
  xhr.send(formData)
  xhr.upload.onprogress = event => {
   const percentages = +((event.loaded / event.total) * 100).toFixed(2);
   this.setState({percentages})
  };
  xhr.onreadystatechange = () => {
    if (xhr.readyState !== 4) return;
    if (xhr.status !== 200) {
     /*handle error*/
    }
    /*handle success*/
  };
}
onDrop(acceptedFiles) {
  const formData = new FormData();
  for (const file of acceptedFiles) formData.append('file', file);

  const xhr = new XMLHttpRequest();
  xhr.upload.onprogress = event => {
   const percentage = parseInt((event.loaded / event.total) * 100);
   console.log(percentage); // Update progress here
  };
  xhr.onreadystatechange = () => {
    if (xhr.readyState !== 4) return;
    if (xhr.status !== 200) {
     console.log('error'); // Handle error here
    }
     console.log('success'); // Handle success here
  };
  xhr.open('POST', 'https://httpbin.org/post', true);
  xhr.send(formData);
}