この記事はこんな人におすすめ
- アップロードボタンを作成して、ユーザーにファイルを選択させたい
- アップロードボタンで選択可能なファイルの種類を限定したい
環境
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:



コメント