Front html page:
<html> <head> <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> </head> <body> <div style="text-align:center"> <div id="processing"></div> <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> </div> </body> </html>
Backend php code: 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>