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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

解決済

2回答

268閲覧

input filesについて

pegy

総合スコア243

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

0クリップ

投稿2017/10/05 22:32

編集2017/10/06 00:34

input type=fileについて、2つご質問させてください。

1.ユーザーからのアップロードファイルの個数を制限する事は可能でしょうか。maxlengthを指定してもファイルサイズの上限しか指定できないように思えます。documentをロード後にjsでカウントさせて、に以上ならinputをhideすることも考えましたが、スマートな方法ではないような気もしています。

2.取得したdataURLからサムネイルを表示させていますが、サムネイルのサイズを指定は可能でしょうか?

【追記】
ご指摘を頂きました、サムネイル表示につきまして、コードを記述させて頂きます。
サーバーサイドでというご意見もありますが、現状JSで処理できればと考えております(AJAXを使用すれば
サーバーサイド側で遷移せずにできるのかもしれませんが、まだajaxに明るくなく。。)
イメージとしてはアップロードしたファイルののオブジェクトのプロパティを変更してサムネイルにうまく出力すれば(縦横非を維持して)うまくすべて共通サイズにして表示することやサーバー側にも格納することができるのかと模索しております。

下記のように、e.target.resultでアップロードしたデータのdataURLを呼び出し、動的に生成したspanタグのsrc属性に格納することでサムネイルを表示する仕組みを検討しております。

Javascript

1 var readerObj = new FileReader(); 2 3 readerObj.onload = (function(theFile) { 4 return function(e) { 5 var span = document.createElement('span'); 6 span.innerHTML = ['<img class="thumbnail" src="', e.target.result, 7 '" title="', escape(theFile.name), '"/>'].join(''); 8 document.getElementById('list').insertBefore(span, null);

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

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

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

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

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

m.ts10806

2017/10/05 23:55

1については意味がわかったので回答しました。2についてはもう少し具体的に要件を記述いただけますか?例など示してもらえれば助かります。
pegy

2017/10/06 00:35

ご指摘ありがとうございます。2について加筆させて頂きました。
guest

回答2

0

ベストアンサー

アップロード上限数があるならファイル名を固定すればいいでしょう。
指定されたどれかの名前にしかならないようにすれば
それ以上の数はアップできません。
もちろんinput fileを使用する限りサーバーサイドのプログラムが必要ですから
相応の振り分け処理を指定してあげる必要があります。

またサムネイルについてはこれもサーバーサイドのプログラムで比較的簡単に
任意の画素数で作成できます。

投稿2017/10/06 00:17

yambejp

総合スコア114829

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

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

pegy

2017/10/06 00:38

ご回答有難うございます。 正直もうしあげますと、ご指摘の方法を調べてみたのですが、 ファイル名の固定というアプローチを咀嚼することができませんでした。。 アップロードされたファイル名をアップロード時にrenameして、予め指定したファイル名以外 受け付けないようにするといった意味合いでしょうか?
yambejp

2017/10/06 01:01

例えばユーザーAさんのユーザーidが12345で、最大ファイル数が5個であれば Aさんは12345_1~5というファイル名でしかアップできないようにします。 Aさんが付けた任意の名前は1~5のどれかに振り分けられるようにするため ユーザーインターフェースで番号を指定してアップロードをするのです
pegy

2017/10/06 01:18

なるほど、了解をいたしました。 早速、コメントを頂き、有難うございました。
guest

0

1.ユーザーからのアップロードファイルの個数を制限する事は可能でしょうか。

下記のようにjavascriptで選択ファイル数のカウントができるので、「超えたらアラート」で制限という形が可能です。

参考先ではボタンonclickでしていますが、input fileのonchangeイベントでも同じように対応ができるはず(onchangeで一時アップロードというのをしたことがあるので)

ただ、より安全にチェックするのであればPHPなどサーバー側の言語でのチェックは必須と思います。

投稿2017/10/05 23:54

m.ts10806

総合スコア80850

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

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

pegy

2017/10/06 00:39

コメント有難うございます。 シンプルな方法でとても良いかと感じました。サーバーサイド側でも (当方PHPを使用していますが)しっかりとチェックをかけていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問