#PHP での複数の画像アップロードの実装について初心者が知っておくべきこと
今日仕事で必要なことがありました。 : a フォームは、QQ スペースで写真をアップロードするモードと同様に、複数の写真のアップロードを実装します。つまり、一度に複数の画像をアップロードできますが、カバー画像は 1 つだけです。 まず最も重要なことは、サーバー上のファイルを読み書きするときは、アクセス許可を確認する必要があります。アクセス許可がない場合は、まったくのデタラメです。なぜこんなことを言うのですか? 涙を流すだけだからです。まず、フロントエンド ページ:index.html
<html> <head><title>多个文件上传表单</title></head> <body> <style> form{ margin: 20px; padding: 10px; } #picInput>input{ display: block; margin: 10px; } </style> <form action="pic.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <div id="picInput"> 上传图片:<input type="file" name='myfile[]'> </div> <input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/> <input type="submit" value="上传文件"> </form> <script> function addPic1(){ var addBtn = document.getElementById('addBtn'); var input = document.createElement("input"); input.type = 'file'; input.name = 'myfile[]'; var picInut = document.getElementById('picInput'); picInut.appendChild(input); if(picInut.children.length == 3){ addBtn.disabled = 'disabled'; } } </script> </body> </html>
ナレッジ ポイント:
1。 JS による動的 入力ノードを追加し、属性を設定します。アップロードされた画像が 3 つを超える場合、画像をアップロードする機会は与えられなくなります。
#2. ここで最も重要なことは、入力入力ボックスの名前の値です。配列要素を動的に追加することで、アップロードされたすべての画像が動的に配列に追加されます。
バックエンド処理関数
Connection.php1. 読み取りと保存の両方でデータベースへの接続が必要であるため、それを封印して良い習慣を身につけることができます<?php //创建对象并打开连接,最后一个参数是选择的数据库名称 $mysqli = new mysqli('localhost','root','','test'); //检查连接是否成功 if (mysqli_connect_errno()){ //注意mysqli_connect_error()新特性 die('Unable to connect!'). mysqli_connect_error(); }
pic.php処理関数
<?php require_once 'connection.php'; $file = $_FILES['myfile']; //得到传输的数据,以数组的形式 $name = $file['name']; //得到文件名称,以数组的形式 $upload_path = "zhouqi666.cn/test/images/"; //上传文件的存放路径 //当前位置 foreach ($name as $k=>$names){ $type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写 $allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型 //把非法格式的图片去除 if (!in_array($type,$allow_type)){ unset($name[$k]); } } $str = ''; foreach ($name as $k=>$item){ $type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写 if (move_uploaded_file($file['tmp_name'][$k],$upload_path.time().$name[$k])){ //$str .= ','.$upload_path.time().$name[$k]; echo 'success'; }else{ echo 'failed'; } } //向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了) $uid = 1; $str = substr($str,1); $sql = "UPDATE upload set pic = '".$str."' WHERE id = ".$uid; $result = $mysqli->query($sql);ここには書いていない多くの判断がありますが、主にたとえば、最初にフォルダーを作成する必要がありますが、それを自分で判断したり、フォルダーが存在しない場合は作成したり、その他の判断を行うこともできます。 最も重要なことは、慣れていない場合は、段階的にデバッグして結果を確認する必要があるということです。
ピクチャ リアリティ機能
<?php require_once 'connection.php'; $uid = 1; $sql = "SELECT pic FROM upload WHERE id =".$uid; $result = $mysqli->query($sql); //取出第一个图片的地址 $picpath = ''; while ($row = $result->fetch_array()){ $picpath = $row[0]; } $picpath = explode(',',$picpath)[0]; echo "<img src='".$picpath."'>"; ?>皆さん、読んでいただきありがとうございます。多くのメリットが得られることを願っています。 この記事は、https://blog.csdn.net/zmzwll1314/article/details/72673138推奨チュートリアル: "
php チュートリアル"## から転載されました。 #
以上がPHP での複数の画像アップロードの実装について初心者が知っておくべきことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。