文件上傳
上傳原理
將本地的文件複製一份傳送到網絡的服務器中儲存
Ø 通過瀏覽器選擇本地文件
Ø 通過互聯網傳送到網絡服務器中的臨時目錄
(系統的臨時目錄temp格式,其實就是垃圾目錄,爲了防止病毒,系統會自動將上傳的文件隨機改名後綴爲.tmp。這個文件是不可以運行的文件,當提交的php腳本運行結束後,如果沒有移動走該臨時文件,那麼系統的臨時文件就會自動刪除該文件)
Ø 如果上傳到臨時目錄中沒有出錯,則把文件從臨時目錄中移動到www目錄下將其改好名字。即爲實現文件的上傳
上傳需注意
Ø HTML表單部分
n 上傳文件時,傳輸方式必須問post方式
n 需要指定表單輸出編碼格式:enctype="multipart/form-data"
Ø PHP頁面部分
如果是文件上傳,那麼上傳的文件在php腳本中不能用$_POST來接受, 必須要用$_FILES來接受,其他內容依然用$_POST來接受
Ø PHP配置文件相關的選項
upload_max_filesize = 2M 允許上傳文件大小的最大值設置
file_uploads = On 允許文件上傳的設置
upload_tmp_dir ="c:/wamp64/tmp" 文件上傳的臨時目錄的設置
max_file_uploads = 20 允許最大上傳文件個數的設置
post_max_size = 8M post最大傳輸內容的最大值設置
注意:upload_max_filesize 設置的值不允許超過post_max_size設置的值
上傳中需考慮
Ø 判斷是否上傳成功,判斷錯誤號,是否從客戶端上傳到系統臨時目錄過程中成功
Ø 判斷上傳文件的類型是否符合要求
Ø 判斷上傳文件的大小時候符合要求
Ø 創建上傳成功後保存的目錄
Ø 上傳上來的圖片不能重名 重新命名
Ø 移動文件(從系統臨時文件目錄中移動到指定的目錄中並且圖片要求重命名)
上傳到臨時系統文件中錯誤號
可查看手冊post上傳方法來整理
文件的類型:可查看MIME類型
文件移動時:
move_uploaded_file() 將長傳的文件移動到新位置
@param1 原路徑
@param2 需要移動的路徑
返回值:成功返回true 失敗返回false
die(); 與break;
函數中不要用以上兩位函數,用return代替
文件下載
就是將服務器中的文件複製一份保存到本地即爲下載
Ø 下載需要的三行代碼
//聲明要下載文件的類型
header('Content-type: image/jpeg');
//對下載文件進行描述並且制定下載文件的名稱
header('Content-Disposition:attachment;filename="下載文件的名稱.jpg");
//讀取需要下載的文件
readfile('./文件目錄/文件名.後綴');
Ø IE瀏覽器中編碼問題
iconv(); 字符集按要求的字符編碼來轉換
@param1 原字符集
@param2 需要轉換成那種字符集
@param3 那個字符串需要轉換
返回值:返回轉換後的字符串 失敗返回false
Ø 設置頁面字符集
header('Content-type:text/html;charset=utf-8');
使用header做條件注意:
儘量不要在header前面輸出,有輸出不會報錯,但是儘量不要這麼做,因爲不符合常理,在php版本小於5.3之前不允許header前面有輸出
注意:header的功能有很多需要一一瞭解
header跳轉
header('location:需要跳轉的路徑');