webuploader は主にファイルのアップロードに使用され、バッチ アップロードと画像プレビューをサポートしています。画像から Base64 データを生成し、それを タグ内で直接使用するため、実際に画像をアップロードする前にその効果を確認できるという効果が得られます。より詳しい導入方法については、webuploader の公式 Web サイトを参照してください。私は、公式 Web サイトのドキュメントを読むことが最も直接的な学習方法であると常々信じています。 webuploader 公式ウェブサイト ちなみに、webuploader は Baidu Fex Team チームによって保守されています。
これについて説明する前に、PHP のファイル アップロード方法を理解する必要があります。
まず、html で <form>
フォームを作成し、
<input type='file' name='xxx'>
アップロード送信ボタンをクリックすると、ファイルをサーバーにアップロードできます。
サーバー側では、受信したアップロードファイルをPHPで指定された一時フォルダーに保存します。PHPの組み込み関数move_uploaded_file()
を使用します。このプロセスでは、ファイルの名前を変更したり、条件を満たしているかどうかを判断するためにファイルのサイズを変更したりすることができます。これでアップロードが完了します。
PHP フォームのアップロードの完全なケースについては、w3school によるこの記事を参照してください。そのため、ここでは詳細には説明しません。 PHP HTML フォームのアップロード ファイル
#2. Webuploader のアップロード原理PHP HTML フォームのアップロードを使用するとファイルのアップロード作業を完了できますが、欠点もあります。webuploader 公式 Web サイト
、参考のために webuploader github ウェアハウスにいくつかのサンプル ケースがあります。私の実行環境: php5.6 nginx macOS私のフォルダーのディレクトリ
index.php<!doctype html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>WebUploader演示</title> <link rel="stylesheet" type="text/css" href="webuploader/css/webuploader.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" /> <link rel="shortcut icon" href="favicon.ico"> </head> <body> <div id="imgPicker">选择文件</div> <button class="btn btn-primary btn-upload">上传</button> <div></div> <div></div> <!--jquery 1.12--> <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script> <!--bootstrap核心js文件--> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <!--webuploader js--> <!--<script type="text/javascript" src="static/jquery.js"></script>--> <script type="text/javascript" src="webuploader/dist/webuploader.min.js"></script> <script type="text/javascript" src="mywebupload.js"></script> </body> </html>
$(function(){ /* * 配置webuploader */ var imgUploader = WebUploader.create({ fileVal: 'img', // 相当于input标签的name属性,用于后台PHP识别接收上传文件的field swf: './webuploader/dist/Uploader.swf', // swf文件路径 server: './upload_img.php', // 文件接收服务端。 fileNumLimit: 10, // 上传文件的限制 pick: { id : '#imgPicker', // multiple : true // 是否支持多文件上传 }, // 只允许上传图片 accept: { title: 'Only Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif,image/bmp' }, auto: false, // 添加文件后是否自动上传上去,我设置了false,后面我会利用自己的上传按钮上传 resize: false // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! }); /* * 设置上传按钮的单击事件 */ $('.btn-upload').click(function(){ imgUploader.upload(); // webuploader内置的upload函数,启动webuploader的上传 }); /* * 配置webuploader的事件监听 */ // 当图片文件被添加到上传队列中 imgUploader.on('fileQueued', function (file) { addImgThumb(file); }); // 生产图片预览 function addImgThumb(file){ imgUploader.makeThumb(file, function(error, ret){ if(!error){ img = '<img alt="" src="' + ret + '" />'; $('.img-thumb').append(img); }else{ console.log('making img error'); } },1,1); } imgUploader.on('uploadSuccess'), function(file, response){ // response 是后台upload_img.php返回的数据 if(response.success){ $('.result').append('<p>' + file.name + '上传成功</p>') }else{ $('.result').append('<p>' + response.message + '</p>') } }); })
upload_img.php
<?php $field = 'img'; // 对应webupload里设置的fileVal $savePath = './uploads/'; // 这里注意设置uploads文件夹的权限 $saveName = time() . uniqid() . '_' . $_FILES[$field]['name']; // 为文件重命名 $fullName = $savePath . $saveName; if (file_exists($fullName)) { $result = [ 'success'=>false, 'message'=>'相同文件名的文件已经存在' ]; }else{ move_uploaded_file($_FILES[$field]["tmp_name"], $fullName); $result = ['success'=>true, 'fullName'=>$fullName]; } return json_encode($result); // 将结果打包成json格式返回 ?>
PHP 関連の技術記事の詳細については、PHP チュートリアル 列にアクセスして学習してください。
以上がphp+WebUploader 画像一括アップロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。