The getPreviewIcon prop accepts a function that determines which icon to display for a specific file. This function receives fileObject (containing the native file object) and classes (the component's internal CSS classes).
This is useful for showing different icons for PDFs, Videos, Audio, or Word documents based on their MIME type.
import React, { useState } from 'react';
import { AttachFile, AudioTrack, Description, PictureAsPdf, Theaters } from '@mui/icons-material';
const handlePreviewIcon = (fileObject, classes) => {
const {type} = fileObject.file
const iconProps = {
className : classes.image,
}
if (type.startsWith("video/")) return <Theaters {...iconProps} />
if (type.startsWith("audio/")) return <AudioTrack {...iconProps} />
switch (type) {
case "application/msword":
case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
return <Description {...iconProps} />
case "application/pdf":
return <PictureAsPdf {...iconProps} />
default:
return <AttachFile {...iconProps} />
}
}
const [fileObjects, setFileObjects] = useState([]);
<DropzoneAreaBase
fileObjects={fileObjects}
onAdd={newFileObjs => {
console.log('onAdd', newFileObjs);
setFileObjects([].concat(fileObjects, newFileObjs));
}}
onDelete={deleteFileObj => {
console.log('onDelete', deleteFileObj);
}}
getPreviewIcon={handlePreviewIcon}
/>