html part
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 part
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>
Related articles:
How to get thinkphp3.2.3 upload file path
Thinkphp3.2.3 Integrate phpqrcode to generate two Sample code sharing of QR code
PHP implements file upload without page refresh
Uses Html5 to implement asynchronous file upload, supports cross-domain, and has upload progress bar