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 업로드 파일 경로를 얻는 방법
QR 생성을 위해 phpqrcode를 통합하는 Thinkphp3.2.3용 샘플 코드 공유 코드
PHP는 페이지 새로 고침 없이 파일 업로드를 구현합니다
Html5를 사용하여 비동기 파일 업로드를 구현하고 교차 도메인을 지원하며 업로드 진행률 표시줄이 있습니다.