$_FILES與move_uploaded_file就可以在php代碼中實現文件或圖片上傳了,這個比起很多編程語言來講php上傳功能是最簡單最好用的了,下面來看個上傳圖片工作代碼,代碼如下:
- <?php
- session_start();
- ?>
- <html xmlns="http://www.49028c.com/ 1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>PHP上傳文件</title>
- <style>
- * {margin:0; padding:0; list-style:none;}
- .content {width:400px; height:200px; margin:0 auto; margin-top:60px;
- background:#ffd3b6; border:dashed 1px #f90}
- .content h1 { width:400px; height: 30px; line-height:30px; text-align:
- center; font-family:"微軟雅黑"; font-size:14px; color:#000}
- .content .error {width:300px; height:30px; line-height:30px;
- text-align:center; margin:0 auto; color:#f00}
- .content .con {width:340px; height:auto; margin:0 auto; font-size:12px;}
- .content #file { width:280px; height:20px; border:solid 1px #ccc;
- background:#fff; margin:10px 0px 6px 0; font-size:12px;}
- .content #send { width:60px; height:22px; border:solid 1px #ccc;
- background:#fff; font-size:12px; margin-top:10px;}
- </style>
- </head>
- <body>
- <div>
- <h1>文件上傳</h1>
- <div>
- <div>
- <?php
- if ($_GET['up']==up) {
- if ($_SESSION['file']==$_GET['irand']) {
- $_size=20000; //設置限制文件大小
- $_dir='phone/'; //文件保存目錄
- function size($_size) {
- //判斷文件大小是否大于1024bit 如果大于,則將大小取值為KB
- if ($_size>1024*1024) {
- return round($_size/1024/1024,2).' MB';
- }else if ($_size>1024) {
- $_size=$_size/1024;
- return ceil($_size).'KB';
- }else {
- return $_size.' bit';
- }
- }
- //設置上傳圖片的類型,設置圖片上傳大小
- $_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
- if (is_array($_upfiles)) {
- if (!in_array($_FILES['userfile']['type'],$_upfiles)) {
- exit('請上傳格式為:jpg,png,gif的文件<br /><a href="upload.php">返回</a>');
- }
- }
- if ($_FILES['userfile']['size']>$_size) {
- exit('上傳文件不能超過:'.size($_size));
- }
- if ($_FILES['userfile']['error']>0) {
- switch ($_FILES['userfile']['error']) {
- case 1: echo '上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值';
- break;
- case 2: echo '上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值';
- break;
- case 3: echo '文件只有部分被上傳';
- break;
- case 4: echo '沒有文件被上傳';
- break;
- case 6: echo '找不到臨時文件夾';
- break;
- case 7: echo '文件寫入失敗';
- break;
- }
- exit;
- }
- //獲取文件擴展名
- if (!is_dir($_dir)) {
- mkdir($_dir,0700);
- }
- $_rand=mt_rand(0,100000);
- $_n=explode('.',$_FILES['userfile']['name']); //將文件名分割
- $_file_len=count($_n); //返回數組長度
- $_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1];
- if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
- if (!@move_uploaded_file($_FILES['userfile']['tmp_name'],$_name)) {
- exit('文件移動失敗');
- }else {
- echo '文件上傳成功<br />';
- echo '文件路徑:'.$_name.'<br />';
- echo '文件大?。?#39;.size(filesize($_name));
- echo '<br /><a href="upload.php">返回繼續上傳</a>';
- }
- }else {
- exit('上傳的臨時文件不存在,無法將文件移動到指定文件夾');
- }
- //銷毀session變量,有幾種方法
- //第一種,銷毀所有session變量:session_destroy();
- //第二種:銷毀單個如:$_SESSION['file']=''
- session_destroy();
- exit;
- }else {
- exit('您已經提交過了,不能重復提交<br /><a href="upload.php">返回</a>');
- }
- }
- ?>
- </div>
- <?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?>
- <form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data">
- <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
- <input type="file" name="userfile" id="file"/><br />
- <input type="submit" name="send" value=" 點擊上傳 " id="send"/>
- </form>
- </div>
- </div>
- </body>
- </html>
新聞熱點
疑難解答