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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

HTML

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

Q&A

解決済

2回答

1887閲覧

PHPでドラッグアンドドロップでファイル保存

flame

総合スコア19

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2019/04/25 01:35

前提・実現したいこと

viewでpdfファイルなどをドラッグアンドドロップで読み込んでDBに保存する機能を作成したいのですがデータがうまく取得できません。

該当のソースコード

php

1<div class="drag_area" ondragover="fDragOver(event);" ondrop="fDrop(event)"> 2 ここにファイルをドラッグ 3 <input name="file" type="hidden" value="" id="file"> 4</div>

javascript

1 // ドラッグ 2 function fDragOver(e){ 3 e.preventDefault(); 4 } 5 6 // ドロップ 7 function fDrop(e){ 8 e.preventDefault(); 9 10 var f = e.dataTransfer.files[0]; 11 var var1 = document.getElementById('file'); 12 var1.value = f; 13 }

試したこと

上記のソースでデータを受け取ろうとしたのですが、inputされたデータを確認すると"[object File]"という文字列が返ってきてしまします。

"file" => "[object File]"

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

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

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

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

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

Y.H.

2019/04/25 01:48

> inputされたデータを確認すると 具体的にどう確認されたのでしょうか?質問を編集し追記ください。 phpで$_POSTの内容を確認された? javascriptでconsole.log()などで確認された?
flame

2019/04/25 01:53

phpの方で$_POSTの内容を確認しました。
yambejp

2019/04/25 01:53

ajaxでバックグラウンドでアップロードするのではなく、 submitしてしまってよいのでしょうか?
flame

2019/04/25 02:00

他にもinputしているデータがあるので一緒にsubmitした方がよいと考えました。
guest

回答2

0

<input type="file">にファイルを設定したい場合、valueではなくfilesを使う必要があります(StackOverflow)。そして、<input type="hidden">にファイルをセットすることはできません。

もっとも、「透明にした巨大な<input type='file'>を作って、そこに向かってドロップしてもらうようにする」ほうが手軽かもしれません。

投稿2019/04/25 01:48

編集2019/04/25 01:49
maisumakun

総合スコア145183

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

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

yambejp

2019/04/25 02:11

>透明にした巨大な<input type='file'> ちょうど書いてたものでした
flame

2019/04/25 02:31

回答ありがとうございます。 同じ回答でしたのでyambejpさんをベストアンサーにさせていただきました。
guest

0

ベストアンサー

submitするなら普通にformのsubmit機能をつかえばよです
例えばこんな感じ

javascript

1<?PHP 2print_r($_FILES); 3?> 4<style> 5.drag_area{ 6height:200px; 7background-Color:lime; 8position:relative; 9} 10.drag_area span{ 11position:absolute; 12} 13#file{ 14width:100%; 15height:100%; 16opacity:0; 17position:absolute; 18} 19</style> 20<script> 21window.addEventListener('DOMContentLoaded', function(e){ 22 var f=document.querySelector('#file'); 23 f.addEventListener('change',function(e){ 24 e.target.form.submit(); 25 }); 26 f.addEventListener('click',function(e){ 27 e.preventDefault(); 28 }); 29}); 30</script> 31<form method="post" enctype="multipart/form-data"> 32aaa 33<div class="drag_area"> 34 <span>ここにファイルをドラッグ</span> 35 <input name="file" type="file" value="" id="file"> 36</div> 37bbb 38</form>

投稿2019/04/25 02:09

yambejp

総合スコア114779

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

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

flame

2019/04/25 02:30

回答ありがとうございます。 コード参考にして無事想定通りの処理になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問