文件上傳,拿上傳圖片做個例子
首先要寫個form表單,之前是提交數據的,現在要上傳文件提交圖片,所以要在后面多加一個屬性
然后再選擇文件,最后上傳
來看一下第一個頁面的代碼部分
運行后看一下效果
在這里不同的瀏覽器運行后,會出現不一樣的樣式,但是功能都是一樣的用,點擊瀏覽后,會彈出選擇文件的窗口
隨便選擇一個文件
文件名就會顯示在頁面上,通過點擊上傳經過處理頁面然后提交
接下來再做第二個頁面 shangchuan.php
第二個頁面提交的因為不是數據了,所以這里就不能用post了
可以使用files數組來取了
來看一下代碼,先輸出一下,看它輸出的都是些什么
點擊上傳
出來的是數組
file數組里面能夠取到的內容 tem_name 后面是文件的路徑,在服務器上暫時存了個臨時文件
如果常理來說只需要再做一步,把文件保存了就可以,但是做程序不能那么簡單的做,得考慮各種因素,各個方面
1、控制上傳文件的類型
2、控制上傳文件的大小
3、防止文件名重復
修改保存的文件名 (1)用戶名+時間戳+隨機數+文件名 (2)流水號
使用文件夾存文件防止文件名重復 最常用的是第一種
4、保存文件
來看一下shangchuan.php 頁面代碼部分
<?php //var_dump($_FILES["file"]); //索引寫它的name值 //判斷文件上傳是否出錯 if($_FILES["file"]["error"]) { echo $_FILES["file"]["error"]; } else { //控制上傳文件類型 if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"]<1024000) { //找到文件存放的位置 $filename = "./file/".date("YmdHis").$_FILES["file"]["name"]; //加 . 拼接 //轉換編碼格式 $filename = iconv("UTF-8","gb2312",$filename); //判斷文件是否存在 if(file_exists($filename)) { echo "該文件已存在!"; } else { //保存文件 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); //移動上傳文件 } } else { echo "文件類型不正確"; } }
在運行前,先建個文件夾,在同一目錄下
用來儲存上傳的圖片
用第一個頁面運行一下,看看能不能運行成功
點擊上傳
然后再去看一下那個文件夾
上傳成功
注明: 如果上傳的這些類型是偽造的,怎么確保保存的是上傳圖片,而不是隨便給的一個路徑
通過 就可以確保,保存的一定是上傳文件
這句話是從UTF—8,轉換為國標,用iconv方法就可以,如果不轉換的話,有些文件名會有出現亂碼的情況
![]() |
不含病毒。www.avast.com |