<FileField>
If you need to render a link to a file based on a path contained in a record field, you can use the <FileField />
component:
import { FileField } from 'react-admin';
<FileField source="url" title="title" />
// renders the record { id: 123, url: 'doc.pdf', title: 'Presentation' } as
<div>
<a href="doc.pdf" title="Presentation">Presentation</a>
</div>
This field is also often used within a <FileInput />
component to display preview.
Properties
Prop | Required | Type | Default | Description |
---|---|---|---|---|
src |
Optional | string |
- | A function returning a string (or an element) to display based on a record |
title |
Optional | string |
record.title | The name of the property containing the image source if the value is an array of objects |
target |
Optional | string |
- | The link target. Set to “_blank” to open the file on a new tab |
download |
Optional | boolean | string |
- | Prompts the user to save the linked URL instead of navigating to it |
ping |
Optional | string |
- | A space-separated list of URLs. When the link is followed, the browser will send POST requests with the body PING to the URLs. Typically for tracking. |
rel |
Optional | string |
- | The relationship of the linked URL as space-separated link types (e.g. ‘noopener’, ‘canonical’, etc.). |
<FileField>
also accepts the common field props.
sx
: CSS API
The <FileField>
component accepts the usual className
prop. You can also override many styles of the inner components thanks to the sx
property (as most Material UI components, see their documentation about it).
To override the style of all instances of <FileField>
using the Material UI style overrides, use the RaFileField
key.
Usage
The optional title
prop points to the file title property, used for title
attributes. It can either be a hard-written string, or a path within your JSON object:
// { file: { url: 'doc.pdf', title: 'Presentation' } }
<FileField source="file.url" title="file.title" />
// renders the file name as "Presentation"
<FileField source="file.url" title="File" />
// renders the file name as "File", since "File" is not a path in previous given object
If the record actually contains an array of files in its property defined by the source
prop, the src
prop will be needed to determine the href
value of the links, for example:
// This is the record
{
files: [
{ url: 'image1.jpg', desc: 'First image' },
{ url: 'image2.jpg', desc: 'Second image' },
]
}
<FileField source="files" src="url" title="desc" />
You can optionally set the target
prop to choose which window will the link try to open in.
// Will make the file open in new window
<FileField source="file.url" target="_blank" />