htmlパート
index.html
<title>无刷新上传文件</title> <meta content-type="text/html" charset="utf-8"> <script type="text/javascript"> function startUpload() { document.getElementById('processing').innerHTML = 'loding...'; return true; } function stopUpload(rel){ var msg; switch (rel) { case 0: msg = "上传成功"; break; case 1: msg = "上传的文件超过限制"; break; case 2: msg = "只能上传图片文件"; break; default: msg = "上传文件失败"; } document.getElementById('processing').innerHTML = msg; } </script> <p style="text-align:center"> </p><p id="processing"></p> <form action="upload.php" method="post" enctype="multipart/form-data" target="form-target" onsubmit="startUpload();"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <input type="file" name="myfile"> <input type="submit" name="sub" value="上传"> </form> <iframe style="width:0; height:0; border:0;" name="form-target"></iframe> <p></p>
PHPパート
upload.php
<!--?php sleep(2); $fileTypes = array('jpg','png','gif','bmp'); $result = null; $uploadDir = './upload'; $maxSize = 1 * pow(2,20); if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['sub'])) { $myfile = $_FILES['myfile']; $myfileType = substr($myfile['name'], strrpos($myfile['name'], ".") + 1); if ($myfile['size'] --> $maxSize) { $result = 1; } else if (!in_array($myfileType, $fileTypes)) { $result = 2; } elseif (is_uploaded_file($myfile['tmp_name'])) { $toFile = $uploadDir . '/' . $myfile['name']; if (@move_uploaded_file($myfile['tmp_name'], $toFile)) { $result = 0; } else { $result = -1; } } else { $result = 1; } } ?> <script type="text/javascript"> window.top.window.stopUpload(<?php echo $result; ?>); </script>
関連記事:
thinkphp3.2.3のアップロードファイルパスの取得方法
Thinkphp3.2.3 phpqrcode を統合するQR コードの共有サンプル コードを 2 つ生成します
PHP は、ページを更新せずにファイル アップロードを実装します
HTML5 を使用して非同期ファイル アップロードを実装し、クロスドメインをサポートし、アップロードの進行状況バーを備えています