Reactjs 使用react dropzone的文件上载进度
使用react dropzone上载文件,我希望实现文件传输百分比或mbs数据传输等文件进度 以下是以下链接: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
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);
}