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

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

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

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

JavaScript

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

HTML

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

Q&A

2回答

2258閲覧

複数の画像ファイルをドラッグ&ドロップでサーバーにアップロードしたい

mikiko

総合スコア11

PHP

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

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/05/30 04:02

前提・実現したいこと

JavaScriptとphpの初心者です。
複数の画像ファイルを、ドラッグ&ドロップし、アップロードボタンを押すと
サーバーにデータが入るようにしたいと考えています。

こちらのサイトのソースをそのまま参考にしているのですが、うまくいかず、
ソースのどこに誤りがあるのかご教示いただけませんでしょうか。
https://www.petitmonte.com/php/fileupload_multi_drog.html

発生している問題・エラーメッセージ

●画像をドラッグしても、何も起こらない ●アップロードボタンを押しても、画像をアップロードできない

該当のソースコード

ここに言語名を入力
【uploads.php】

<?php $errmsg = ""; // エラーメッセージ define("FOLDER_UPLOAD" ,"./upload/") ; // 保存先のフォルダ名(任意のフォルダ名にする) if (isset($_FILES["upfile"])){ // エラーの確認 foreach ($_FILES["upfile"]["error"] as $key => $error) { // アップロード系のエラー switch ($error) { case UPLOAD_ERR_OK: // OK break; case UPLOAD_ERR_NO_FILE: $errmsg = '<span style="font-weight:bold;color:red;">ファイルが選択されていません。</span><br />'; break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $errmsg .= '<span style="font-weight:bold;color:red;">「'.$_FILES["upfile"]["name"][$key] . '」のファイルサイズが最大値を超えています。</span><br />'; break; default: $errmsg .= '<span style="font-weight:bold;color:red;">「'.$_FILES["upfile"]["name"][$key] . '」:エラーが発生しました。</span><br />'; break; } if ($error === UPLOAD_ERR_OK){ // 同名ファイルの確認 if (file_exists(FOLDER_UPLOAD .$_FILES["upfile"]["name"][$key])){ $errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"][$key] . '」は既に存在します。</span><br />'; } // ファイルのタイプの確認 if (!( ($_FILES["upfile"]["type"][$key] === 'image/gif') || ($_FILES["upfile"]["type"][$key] === 'image/jpeg') || ($_FILES["upfile"]["type"][$key] === 'image/png'))){ $errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"][$key] . '」は対応していない形式です。</span><br />'; } } } // ファイルのアップロード if ($errmsg == ""){ foreach ($_FILES["upfile"]["error"] as $key => $value) { $filename = FOLDER_UPLOAD . $_FILES["upfile"]["name"][$key]; if (move_uploaded_file($_FILES['upfile']['tmp_name'][$key],$filename)){ chmod($filename,0644); }else{ $errmsg .= '<span style="font-weight:bold;color:red;">ファイルのアップロードに失敗しました。</span><br />'; } } } if ($errmsg == ""){ foreach ($_FILES["upfile"]["error"] as $key => $value) { $errmsg .= '<span style="font-weight:bold;">・「' . $_FILES["upfile"]["name"][$key] . '」をアップロードしました。</span><br />'; $errmsg .= '<img src="' . htmlspecialchars(FOLDER_UPLOAD . $_FILES["upfile"]["name"][$key]) .'" /><br />'; } } // ドラッグ&ドロップの場合は終了 if ($_GET["drop"] == 1){ // 下記2行の処理はAjaxで必須 echo $errmsg; exit(); } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script type="text/javascript"> <!-- // XMLHttpRequestオブジェクトの生成 function createXmlHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else if(window.ActiveXObject){ try { return new ActiveXObject("MSXML2.XMLHTTP.6.0"); } catch (e) { try { return new ActiveXObject("MSXML2.XMLHTTP.3.0"); } catch (e2) { try { return new ActiveXObject("MSXML2.XMLHTTP"); } catch (e3) { return null } } } }else { return null } } // サーバーへHttpリクエストの送信 function sendHttpRequest(files){ // XMLHttpRequestオブジェクトの生成 var xmlhttp = createXmlHttpRequest(); // イベントの設定 xmlhttp.onreadystatechange = function() { // レスポンスの処理が完了後、コールバック関数へ渡す if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // コールバック XmlHttpCallback(xmlhttp); } } // フォームデータの生成(HTML5) var fd = new FormData(); for (var i=0; i< files.length; i++) { fd.append("upfile[]",files[i]); } xmlhttp.open('POST', 'upload.php?drop=1', true); // サーバにHTTPリクエストを送信 xmlhttp.send(fd); } // コールバック関数(クライアント側への表示) function XmlHttpCallback(xmlhttp){ var result = document.getElementById("result"); result.innerHTML = xmlhttp.responseText; } // *** アップロード用ドラッグ&ドロップ function onUpload_DragOver(event){ // イベントのキャンセル event.preventDefault(); } function onUpload_Drop(event){ if (event.dataTransfer.files.length !=0){ // まとめて送信する sendHttpRequest(event.dataTransfer.files); } // イベントのキャンセル event.preventDefault(); } // --> </script> </head> <body> <div id="result"><?php echo $errmsg; ?></div> <br /> <form action="upload.php" method="post" enctype="multipart/form-data"> <div ondragover="onUpload_DragOver(event)" ondrop="onUpload_Drop(event)" style="border:2px solid #ccc; width:300px;height:150px;"> <input type="file" name="upfile[]" multiple="multiple" /><br /> <br /> <br /> ここに画像ファイルをドラッグ&ドロップ。 </div> <br /> <input type="submit" value="アップロードを実行する" /> </form> </body> </html>

【upload.php】

<?php for ($i=0; $i < $count; $i++) { if (is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) { list($file_name,$file_type) = explode(".",$_FILES["upfile"]["name"][$i]); $uploadfile = "upload/".$now."_".$i.'.'.$file_type; $PHOTO[]=$now."_".$i.'.'.$file_type; if (move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $uploadfile)) { chmod($uploadfile, 0644); } else {} } else {} } $PHOTO = implode("/",$PHOTO ); if ($IMAGES) { $PHOTO = $IMAGES."/".$PHOTO; } ?>

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

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

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

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

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

guest

回答2

0

Dropzone.js を使われてはどうですか?
PHPとjsで簡単に実装でき、高機能ですよ。

https://www.dropzonejs.com/

投稿2020/05/30 04:09

uemon

総合スコア37

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

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

mikiko

2020/05/30 05:04

ありがとうございます。ただ、画像名をデータベースに入れることなどもしたくて、javasciptに不慣れで、カスタマイズなどもできないため、できたら上記のソースの誤りを直して、そのまま使いたい次第です。。
m.ts10806

2020/05/30 05:20

「もうちょっと」「あと少しのはずだ」と思ってるのはおそらく自分だけというのはよくあるので、さっと切り替えるのもありかと思います。 結局「ドラッグ&ドロップ」のところはJavaScriptになるわけですし、プラグインのほうが楽と思います。 (でなかったとしてもインデント全くなしは見る気起きないですし)
mikiko

2020/05/30 05:46

ありがとうございます。チャレンジしてみますね。
guest

0

ファイルアップロードだけならjavascriptはいらないかも

PHP

1<?PHP 2print_r($_FILES); 3?> 4<form method="post" enctype="multipart/form-data"> 5<input type="file" name="f[]" multiple> 6<input type="submit" value="send"> 7</form>

あとは、php側でどのディレクトリにアップロードするかとか
すでにアップされているファイルと競合したときにどうするか
など、仕様をつめていく必要があります

投稿2020/05/30 05:30

yambejp

総合スコア116724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問