用PHP文件上传的具体思路及实现_PHP教程
文件上传我们需要用到HTML里面表单的type=file类型,及其enctype属性。这是我们大家必须要用的。当然了PHP函数库当中的FILE函数库,字符串类型函数库,目录函数库及$_FILES[]的使用是我们必须要用到的。
也许每一个站点都可能会对上传文件有许多的限制,这些限制会包括 文件类型,文件大小,扩展名,以及上传目录的存在与否,上传文件的存在与否,目录的可写性,可读性,上传文件的改名及怎样把文件从缓存当中复制到你所需要的目录当中。
当然出错的预处理也是我们不容忽视的!如果再深一步的讨论我们还可以对文件的操作起用事件日志的记录。
下面我们通过一段程序来实现这些功能:
首先是我们预设的变量值,它包括文件大小,文件扩展名类型,MIMI类型,及是否删除的开关变量
$MAX_SIZE = 2000000; $FILE_MIMES = array(image/jpeg,image/jpg,image/gif ,image/png,application/msword); $FILE_EXTS = array(.zip,.jpg,.png,.gif); $DELETABLE = true; |
下一部就是设置浏览器访问变量及目录访问变量:
$site_name = $_SERVER[HTTP_HOST]; $url_dir = http://.$_SERVER[HTTP_HOST].dirname($_SERVER[PHP_SELF]); $url_this = http://.$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]; $upload_dir = files/; $upload_url = $url_dir./files/; $message =; |
建立上传目录并相应改变权限:
if (!is_dir(files)) { if (!mkdir($upload_dir)) die (upload_files directory doesnt exist and creation failed); if (!chmod($upload_dir,0755)) die (change permission to 755 failed.); } |
用户请求的处理:
if ($_REQUEST[del] && $DELETABLE) { $resource = fopen(log.txt,a); fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n); fclose($resource); if (strpos($_REQUEST[del],/.)>0); //possible hacking else if (strpos($_REQUEST[del],files/) === false); //possible hacking else if (substr($_REQUEST[del],0,6)==files/) { unlink($_REQUEST[del]); print <script>window.location.href=$url_this?message=deleted successfully</script>; } } else if ($_FILES[userfile]) { $resource = fopen(log.txt,a); fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR] .$_FILES[userfile][name]. .$_FILES[userfile][type].\n); fclose($resource); $file_type = $_FILES[userfile][type]; $file_name = $_FILES[userfile][name]; $file_ext = strtolower(substr($file_name,strrpos($file_name,.))); //文件大小的检查: if ( $_FILES[userfile][size] > $MAX_SIZE) $message = The file size is over 2MB.; //File Type/Extension Check else if (!in_array($file_type, $FILE_MIMES) && !in_array($file_ext, $FILE_EXTS) ) $message = Sorry, $file_name($file_type) is not allowed to be uploaded.; else $message = do_upload($upload_dir, $upload_url); print <script>window.location.href=$url_this?message=$message</script>; } else if (!$_FILES[userfile]); else $message = Invalid File Specified.; 列出我们上传的文件: $handle=opendir($upload_dir); $filelist = ; while ($file = readdir($handle)) { if(!is_dir($file) && !is_link($file)) { $filelist .= <a href=$upload_dir$file>.$file.</a>; if ($DELETABLE) $filelist .= <a href=?del=$upload_dir$file title=delete>x</a>; $filelist .= <sub><small><small><font color=grey> .date(d-m H:i, filemtime($upload_dir.$file)) .</font></small></small></sub>; $filelist .=<br>; } } function do_upload($upload_dir, $upload_url) { $temp_name = $_FILES[userfile][tmp_name]; $file_name = $_FILES[userfile][name]; $file_name = str_replace(\\,,$file_name); $file_name = str_replace(,,$file_name); $file_path = $upload_dir.$file_name; //File Name Check if ( $file_name ==) { $message = Invalid File Name Specified; return $message; } $result = move_uploaded_file($temp_name, $file_path); if (!chmod($file_path,0777)) $message = change permission to 777 failed.; else $message = ($result)?$file_name uploaded successfully. : Somthing is wrong with uploading a file.; return $message; } ?> <center> <font color=red><?=$_REQUEST[message]?></font> <br> <form name=upload id=upload ENCTYPE=multipart/form-data method=post> Upload File <input type=file id=userfile name=userfile> <input type=submit name=upload value=Upload> </form> <br><b>My Files</b> <hr width=70%> <?=$filelist?> <hr width=70%> <small><sup>Developed By <a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a> </sup></small> </center> |

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c
