質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4092閲覧

Bootstrap 4: bs-custom-file-input: ドラッグ&ドロップ時のファイルの限定

query1000

総合スコア5

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/11/11 06:42

HTMLフォームを使ったファイルのアップロードで、以下のようにinputタグを書いてアップロード出来ています。
拡張子が.pdfまたは.PDFのファイルのみ許すとし、必須としています。

<input type="file" name="file" accept=".pdf, .PDF" required>

以下の点で不満がありました。

  • 他のUI要素はBootstrap 4を使って派手派手にしているのに、少し見た目が寂しい
  • ドラッグ&ドロップに対応していない

そこで以下のように変更しました。

<div class="input-group mb-3"> <div class="custom-file"> <input type="file" class="custom-file-input" id="inputGroupFile01" name="file" accept=".pdf, .PDF" required> <label class="custom-file-label" for="inputGroupFile01">Choose file</label> </div> </div> ・・・(中略)・・・ <script src="https://cdn.jsdelivr.net/npm/bs-custom-file-input/dist/bs-custom-file-input.js"></script> <script> bsCustomFileInput.init(); </script> </body>

以下のブログを参考にしました。

https://blog1.mammb.com/entry/2019/12/11/090000

以下の点で改善しました。

  • 見た目が他と統一感が取れた
  • ドラッグ&ドロップに対応した

しかし、以下の点で不満があります。

  • ドラッグ&ドロップ時にinputタグのaccept要素が効かない。[参照...]ボタンを使うとPDFファイルのみが表示されるが、ドラッグ&ドロップでは何のファイルでも表示されてしまう。

GitHubを見ると、おそらくbsCustomFileInput.init()メソッドに何らかの引数を渡せばできると思いますが、やり方が分かりません。
https://github.com/Johann-S/bs-custom-file-input

ということで、質問は

  • ドラッグ&ドロップでファイルをPDFのみに限定することは出来るか
  • できなければ、ドラッグ&ドロップを禁止にできるか

以上です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

bs-custom-file-inputではサポートしていないので、あまりやりたくなかったんですがJavaScriptで解決しました。。

HTML側

1 <input type="file" class="custom-file-input" id="inputGroupFile01" name="file" accept=".pdf, .PDF" 2 onchange="fileCheck()" 3 required>

JS側

1 function fileCheck() { 2 var e = document.getElementById('inputGroupFile01'); 3 var v = e.value; 4 ext = v.slice (-4); 5 if (ext != '.pdf' && ext != '.PDF') { 6 alert (v + ' is not a PDF'); 7 e.value = ''; 8 } 9}

もっとエレガントな回答があれば引き続きご教示ください。

投稿2021/11/12 09:17

query1000

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのような Issue が挙がっているようです。

Hi @Leenshady, it's not the purpose of this plugin and as @jessycormier said it's not a good practice to do that only on the front side.

file type filtering · Issue #41 · Johann-S/bs-custom-file-input · GitHub

とのことですので、このライブラリではできなさそうです。


コメントを受けて追記

コメントにも書きましたが、見た目だけの問題であれば、Bootstrap5 のフォームコントロールだけコンパイルして使ってみるのもいいかもしれません。

4の上から5のフォームコントロールを上書きしたサンプルを置いておきます。
https://jsfiddle.net/Lhankor_Mhy/g7t96o3r/

投稿2021/11/11 06:56

編集2021/11/13 04:43
Lhankor_Mhy

総合スコア36908

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

query1000

2021/11/11 07:08 編集

ありがとうございます。file typeによるフィルタリングは仕様で出来ないということですね。 となるとdrag&dropを抑制したいです。 自分でIssueを挙げてみましたが、やり方がおわかりの方がいらっしゃればご教示いただけると幸いです。 https://github.com/Johann-S/bs-custom-file-input/issues/104
Lhankor_Mhy

2021/11/12 10:10

変数の違いで死んじゃうか……
query1000

2021/11/13 06:00

ありがとうございます。 こちらのBootstrap5のFile Inputは、4のと同じような見た目ですが、設定を変えれば、ドラッグ&ドロップされたファイルタイプのチェック(こちらの方が望ましい)や、ドラッグ&ドロップ自体の禁止が出来るのでしょうか。
Lhankor_Mhy

2021/11/15 02:47

ようやく問題を把握できました。 Bootstrap とか関係なく、ブラウザの挙動としてのドロップを禁止したいということなのですね。 そうすると、dropのイベントを拾ってキャンセルしてしまえばいいような気がします。
query1000

2021/11/15 03:36

質問の仕方が悪くてスミマセン! そうなんです。特定のファイル以外を入れたくないので、accept属性で調整していたが、dropだとそれをすり抜けてしまうのが問題だったんですよね。 なんとなく今の(目的の拡張子以外がドロップされるとキャンセルされる)JavaScriptで目的はかなってしまっているので、これでよしとします。 でもGitHubのIssueを見つけてくださって助かりました。
Lhankor_Mhy

2021/11/15 03:48

ご解決されて何よりです。 飲み込みが悪くお役に立てずすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問