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

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

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

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

JavaScript

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

Q&A

1回答

4021閲覧

【スマホ・タブレット】input type=file において、カメラで撮影した写真かフォルダから選択したものかを判定する方法

heroherohero

総合スコア38

HTML5

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

JavaScript

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

1グッド

2クリップ

投稿2020/09/22 05:48

現在、Webシステムを開発しており、fileアップロード時inputタブで、複数のファイルをアップロードすることを想定しております。

HTML

1<input accept="image/*" type="file" multiple maxlength="5" />

この時に、ファイル選択完了後にjavascriptで処理をするようにしているのですが、そこで、カメラを起動して撮影した画像なのか、もしくは、フォルダの中から選択した画像なのかによって処理を分けたいのですが、そこの判別方法が調べても分からなかったため、質問させていただきました。

どうぞ、よろしくお願いいたします。

geta👍を押しています

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

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

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

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

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

maisumakun

2020/09/22 05:54

どのような理由で区別したいのでしょうか? (capture属性でカメラ指定をすることは可能ですが、それでは賄えない状況でしょうか?)
heroherohero

2020/09/22 06:30

質問、ありがとうございます。 画像の中からExif情報を取得したいためです。 iPhone、iPadでは、カメラで撮影した写真だと、Exif情報が取得できなかったので、それで対応を分けたいと思い、このような質問をさせていただいております。 iPad・iPhoneでは、カメラの設定を、互換性優勢で使用する予定ですので、そこにはExif情報があるのですが、ファイルアップロード時に撮影した写真だと、Exif情報がないことを確認しております。 カメラよりも、ファイルアップロードも行いたいため、capture属性だけでは対応はできない状況かと思っております。 ※カメラが起動しないようにできれば、それでも問題はありません。 〇互換性優勢 https://omoidebako.jp/blog/ios11-heif/ 〇iOS 写真アップロードについて https://qiita.com/zaru/items/29c12e2c8a7351f502e1 よろしくお願いいたします。
maisumakun

2020/09/22 06:45

> iPhone、iPadでは、カメラで撮影した写真だと、Exif情報が取得できなかったので、それで対応を分けたいと思い 「Exif情報の取得を試みて、失敗した場合も考慮した処理を書く」ではだめなのでしょうか?
heroherohero

2020/09/22 06:56 編集

はい。例えば、PCでpngファイルをアップロードした場合などとは、分けたいために今回の質問をさせていただいておりますが、もし難しいようであれば、例えば以下のような条件でそれを検知することは可能なような気がしてきました。 ・Exif情報が取得できない。 かつ ・ファイルが1つしかない。 かつ ・ファイルのFile.prototype.lastModifiedが、現在日時よりも30秒以内。(30秒は適当ですが。。)
guest

回答1

0

良い質問ですね。

自分も、写真共有サイトを作った時に、スマホからのアップロードで判別できるといいなあと思っていました。

以下2点、ご提案させていただきます。

  1. 取得した素材からは、ファイル名と取得時間ぐらいしか判別できないので、その点で判断する。

index.html

1<html> 2<head> 3 <title>カメラ取得かファイル選択可を判別</title> 4</head> 5<body> 6 7 <h1>FileUpload</h1> 8 9 <input type="file" name="test"> 10 <div class="message" style="white-space:pre;"></div> 11 12<script> 13document.querySelector("input[type='file']").addEventListener("change" , function(e){ 14 var msg = document.querySelector(".message"); 15 var txt = ""; 16 for(var i=0; i<e.target.files.length; i++){ 17 txt += i+" : \n"; 18 for(var j in e.target.files[i]){ 19 txt += j +" : "+ e.target.files[i][j] +"\n"; 20 } 21 txt += "\n"; 22 } 23 24 msg.textContent += txt; 25}); 26</script> 27 28</body> 29</html>
  1. スマホの場合はカメラのみ起動

INPUTタグ

1<input type="file" name="test" capture>

こうすると、カメラ起動のみになります。

投稿2020/09/24 22:44

編集2020/09/24 22:59
geta

総合スコア241

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問