PHP練習7 檔案上傳
阿新 • • 發佈:2018-12-14
本實驗實現上傳檔案到伺服器,並通過頁面呈現目錄下檔案。
1. upload.html
<html> <head> <title>Administration - upload new files</title> </head> <body> <h1>Upload new news files</h1> <form enctype="multipart/form-data" action="upload.php" method=post> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> Upload this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> </body> </html>
2. upload.php 伺服器上建立/uploads目錄,提交按鈕上傳檔案儲存在裡面
<html> <head> <title>Uploading...</title> </head> <body> <h1>Uploading file...</h1> <?php //Check to see if an error code was generated on the upload attempt if ($_FILES['userfile']['error'] > 0) { echo 'Problem: '; switch ($_FILES['userfile']['error']) { case 1: echo 'File exceeded upload_max_filesize'; break; case 2: echo 'File exceeded max_file_size'; break; case 3: echo 'File only partially uploaded'; break; case 4: echo 'No file uploaded'; break; case 6: echo 'Cannot upload file: No temp directory specified.'; break; case 7: echo 'Upload failed: Cannot write to disk.'; break; } exit; } // Does the file have the right MIME type? if ($_FILES['userfile']['type'] != 'text/plain') { echo 'Problem: file is not plain text'; exit; } // put the file where we'd like it $upfile = '/uploads/'.$_FILES['userfile']['name']; if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile)) { echo 'Problem: Could not move file to destination directory'; exit; } } else { echo 'Problem: Possible file upload attack. Filename: '; echo $_FILES['userfile']['name']; exit; } echo 'File uploaded successfully<br><br>'; ?> </body> </html>
[[email protected] uploads]# pwd
/uploads
[[email protected] uploads]# ls -l
total 4
-rw-r--r-- 1 apache apache 12 Oct 8 22:42 file1.txt
3. 使用dir類顯示目錄列表
<html> <head> <title>Browse Directories</title> </head> <body> <h1>Browsing</h1> <?php $dir = dir("/uploads/"); echo "<p>Handle is $dir->handle</p>"; echo "<p>Upload directory is $dir->path</p>"; echo '<p>Directory Listing:</p><ul>'; while(false !== ($file = $dir->read())) //strip out the two entries of . and .. if($file != "." && $file != "..") { echo '<a href="filedetails.php?file='.$file.'">'.$file.'</a><br>'; } echo '</ul>'; $dir->close(); ?> </body> </html>