この記事はこんな人におすすめ
- アップロードボタンを作成して、ユーザーにファイルを選択させたい
- アップロードボタンで選択可能なファイルの種類を限定したい
環境
React: 17.0.2
MUI: 5.5.2
アップロードボタンを作成する
ボタンをアップロードボタンにする
通常のボタンは、<Label> と <Input> タグと組み合わせることでアップロードボタンにすることができます。
書式は以下の通りです。
<Input> タグがありますが、画面に表示する必要はありません。そこで、1〜3行目で非表示属性を作成しておきます。Button がクリックされると、Mac の場合は Finder が、WIndows の場合はエクスプローラーが表示されます。このとき、選択可能なファイルは <Input> タグの accept 属性で設定します。
const Input = styled('input')({ display: 'none', }); <label htmlFor="contained-button-file"> <Input accept="選択可能なファイルの種類" id="contained-button-file" multiple type="file" /> <Button variant="contained" component="span"> ボタン表面に表示する文字列 </Button> </label>
以下にアップロードボタンの例を示します。この例では <Input> タグの accept 属性に”image/*” を指定しているので画像を選択することができます。
import Button from '@mui/material/Button'; import { styled } from '@mui/material/styles'; const Input = styled('input')({ display: 'none', }); /// /// Button アップロードボタンを作成する /// export default function ButtonSample7() { return ( <label htmlFor="contained-button-file"> <Input accept="image/*" id="contained-button-file" multiple type="file" /> <Button variant="contained" component="span"> アップロード </Button> </label> ); }
アイコンをアップロードボタンにする
アイコンをアップロードボタンにする場合の書式は以下の通りです。
<Input> タグがありますが、先ほど同様に画面に表示する必要はありません。<Button>タグの内側には表示したいアイコンタグを配置します。
const Input = styled('input')({ display: 'none', }); <label htmlFor="contained-button-file"> <Input accept="選択可能なファイルの種類" id="contained-button-file" multiple type="file" /> <Button variant="contained" component="span"> ボタン表面に表示するアイコンのタグ </Button> </label>
以下に例を示します。カメラアイコンを表示し、クリックされると画像ファイルを選択することができます。
import Button from '@mui/material/Button'; import { styled } from '@mui/material/styles'; const Input = styled('input')({ display: 'none', }); export default function ButtonSample7() { return ( <label htmlFor="icon-button-file"> <Input accept="image/*" id="icon-button-file" type="file" /> <IconButton color="primary" aria-label="upload picture" component="span"> <PhotoCamera /> </IconButton> </label> ); }
選択可能なファイルの種類の例
<Input> タグの accept 属性には、ユーザーに選択をさせたいファイルの種類を設定することができます。
以下に例を示します。
ファイルの種類を示す値 | 説明 |
audio/* | オーディオファイル全般 |
video/* | 動画ファイル全般 |
image/* | 画像ファイル全般 |
text/html | HTMLファイル |
text/xml | XMLファイル |
text/css | スタイルシート(CSS) |
text/csv | テキスト |
image/png | PNG |
image/jpeg | JPEG |
image/gif | GIF |
audio/mpeg | MP3 |
video/mpeg | MPEG |
video/mp4 | MP4 |
application/pdf |
MUI Tips 一覧
その他の MUI Tips 一覧はコチラを参照してください。
Please follow and like us:
コメント