PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

第六章 网页设计与制作基础.
白玉苦瓜 余光中.
第 4 章 PHP 基本語法.
班級:四服ㄧB 座號:40 指導老師:范靜媛老師 姓名:郭曼姿
門神 在傳統觀念中,門是居住環境中與外界相通的出入口,具有重要的屏障作用。門神顧名思義就是護宅守門的神仙,每逢過年,上至天子百官下至普通百姓,家家戶戶必在門上張貼門神,以保一家平安。 門神種類主要有宅第大門上將軍武門神、內室門戶上祈福文門神,還有童子門神、仙子門神等,形象豐富多樣,皇家貴戚還往往在畫上瀝粉貼金,十分吉祥喜慶。
第5章 HTML 標籤介紹.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
第13章 FTP檔案上傳、 自動傳送 報告人 M9153314 李育旻.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
認證與檔案上傳 學習目標 基本原理 資料庫連線與選擇 執行查詢 取回答案 SQL Injection.
指導老師:吳玫瑩老師 林智煌 莊富鈞 廖一璇 施明忠 專題組員:.
HTML.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
PHP+MySQL互動式網頁程式設計班 PHP進階語法 講師:林業峻 CSIE, NTU 6/ 19, 2010.
PHP+MySQL互動式網頁程式設計班 範例實作-網路留言板 講師:林業峻 CSIE, NTU 6 /27, 2010.
PHP+MySQL互動式網頁程式設計班 範例實作-電子相簿 講師:林業峻 CSIE, NTU 7 / 4, 2010.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 9 章 常數.
【PHP程式設計】 實作一:計算BMI.
第四章 網頁表單與資料傳遞.
留言版 1.先Create一個留言板的table
Introduction to PHP part3
网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.
2018/11/11 CGI程式設計進階 (for UNIX Perl) 國立中央大學電算中心 陳慶彥.
PHP +MySQL快速入門 Lesson 4.
第一章 C语言概述.
Ch11 檔案上傳及電子郵件 WEB程式設計.
ASP.NET 網頁製作教本 – 從基本語法學起
专题4:JSP脚本和指令.
PHP與SQL語法存取MySQL SQL
PHP與MySQL 入門學習指南 凱文瑞克 著 第 23 章 資料型別.
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
Lesson 5 :基礎應用二(留言版) (2004/08/20).
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
無障礙網頁 公關室.
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
JavaScript 靜宜大學 資管系 楊子青.
第12章 JSP的檔案與電子郵件處理 12-1 伺服端的檔案處理 12-2 伺服端檔案的讀取與寫入 12-3 客戶端的檔案上傳
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP 變數、常數與運算子 變數 常數 運算子
网站设计 前端 选择器(复习),表单.
表單(Form).
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
PHP+MySQL互動式網頁程式設計班 期末考 講師:林業峻 CSIE, NTU 7 / 11, 2010.
架站實做—AppServ
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
檔案上傳
Chap5 PHP程式設計進階 授課講師:.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
第六章 迴圈與陣列.
PHP+MySQL互動式網頁程式設計班 課程資訊 講師:林業峻 CSIE, NTU 6/ 12, 2010.
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
HTML 103 互動式網頁 助教:黃毓瑩.
XML備份MySQL資料庫 <html> <head>
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
第6章 PHP的数据采集.
Lesson 4 :基礎應用一(計數器) (2005/01/27).
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
網頁設計實務- PHP 與資料庫整合.
项目一 了解网站的概念 项目二 创建个人网站“鸿渐工作室” 项目三 制作“鸿渐工作室”的主页 项目四 HTML语言 项目五 制作“家乡特产”网页 项目六 制作“给我留言”网页 项目七 制作“应用技巧”网页 项目八 模板制作及应用.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.
第1章 HTML基础 主讲人:刘泰然 经济管理学院.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010

課程大綱 HTML表單元件:檔案上傳 PHP檔案上傳相關語法 使用MySQL管理上傳檔案 下載來自MySQL的檔案

使用網頁上傳檔案的原理 HTML提供了檔案上傳的表單元件,提供使用者使 用表單將檔案傳到網站主機。 網站可透過PHP程式接收檔案相關資訊,並將檔 案搬到網頁資料夾以供使用者連結。 送出網址 +表單內容 暫存檔 新檔名.jpg .htm (.php) 表單 .php 處理表單 回傳php輸出資料 網站 個人電腦 網站伺服器

HTML表單:檔案上傳 當表單中有需要用到檔案上傳時,method要用 POST ,且需要把form裡的enctype設為 multipart/form-data。 HTML語法: <form method="POST" enctype="multipart/form-data" action="目標頁面" > <input…> … </form> 補充說明: enctype中有兩種屬性 application/x-www-form-urlencoded (預設值) multipart/form-data (檔案上傳用)

表單元件:檔案上傳 使用時機:用來上傳一個檔案到網站電腦。 語法: 運作: <input type="file"> name: 元件名稱 size: 字元寬度 運作: 將元件名稱name的本機檔案內容以POST方式將二進位檔傳 送到網站主機。 <html> <head><title>PHP範例程式</title></head> <body> <form method="POST" enctype="multipart/form-data" action="file_action.php"> <input type="file" name="F1" size="20"><br> <input type="submit" value="送出" name="B1"><br> </form> </body> </html>

課程大綱 HTML表單元件:檔案上傳 PHP檔案上傳相關語法 使用MySQL管理上傳檔案 下載來自MySQL的檔案

PHP接收檔案的步驟 使用超級全域變數取得檔案資訊 判斷檔案是否存在? 否:直接將暫存檔搬動到目前網頁所在地並回復檔名 是:後續處理 (顯示上傳失敗, 覆蓋檔案, 修改檔名)

STEP1: 超級全域變數$_FILES 使用超級全域變數$_FILES來取得檔案資料 檔案屬性 使用範例:檔案F1之檔案資訊如下 用來接收來自表單的檔案上傳表單元件所指定的檔案 檔案屬性 name: 檔案名稱 type: 檔案類型 size: 檔案大小 tmp_name: 暫存檔名稱 使用範例:檔案F1之檔案資訊如下 $_FILES['F1']['name'] $_FILES['F1']['type'] $_FILES['F1']['size'] $_FILES['F1']['tmp_name']

範例 chap07/files.htm files_action.php files.htm <html> <head><title>PHP範例程式</title></head> <body> <form method="POST" enctype="multipart/form-data" action="file_action.php"> <input type="file" name="F1" size="20"><br> <input type="submit" value="送出" name="B1"><br> </form> </body> </html> files_action.php <html> <head><title>PHP範例程式</title></head> <body> <? $F1_name = $_FILES['F1']['name']; $F1_type = $_FILES['F1']['type']; $F1_size = $_FILES['F1']['size']; $F1_tmp_name = $_FILES['F1']['tmp_name']; echo "檔案名稱:$F1_name<br>"; echo "檔案類型:$F1_type<br>"; echo "檔案大小:$F1_size<br>"; echo "暫存檔名稱:$F1_tmp_name<br>"; ?> </body> </html> files.htm

STEP2: 判斷檔案是否存在 如果同一個檔名的檔案已經存在於網站資料夾中 ,會造成資料直接被覆蓋。因此需要檢察看看檔 案是否存在,再做進一步的處理。 PHP判斷檔案是否存在之函式 file_exists("檔案名稱")

搬動暫存檔並回復檔名 經由網頁上傳的檔案,系統會先將它重新取個名 字放在電腦的某個地方,我們需要用程式將它搬 到網站的資料夾。 PHP搬動暫存檔到網站並回復檔名之函式 move_uploaded_file ("暫存檔名","檔案名稱")

範例 chap07/file_move.htm file_move.htm file_move_action.php <html> <head><title>PHP範例程式</title></head> <body> <form method="POST" enctype="multipart/form-data" action="file_move_action.php"> <input type="file" name="F1" size="20"><br> <input type="submit" value="送出" name="B1"><br> </form> </body> </html> <html> <head><title>PHP範例程式</title></head> <body> <? $F1_name = $_FILES['F1']['name']; $F1_type = $_FILES['F1']['type']; $F1_size = $_FILES['F1']['size']; $F1_tmp_name = $_FILES['F1']['tmp_name']; if( file_exists("file/$F1_name" )) { echo "檔案已存在"; } else move_uploaded_file($F1_tmp_name, "file/$F1_name"); echo "檔案上傳完畢"; ?> </body> </html> file_move.htm file_move_action.php

檔案已存在的後續處理 如果同檔名的檔案已經存在於網站資料夾中,程 式設計師可以依照情況選擇用下面三種方法處理 顯示上傳失敗 覆蓋檔案 修改檔名 顯示上傳失敗可以直接用echo印出訊息 覆蓋檔案則直接用move_uploaded_file 其中我們來看修改檔名該如何處理

修改檔名 如果同檔名的檔案已經存在於網站資料夾中,我 們可以用下面方法對檔名開頭加註一個編號。 $i = 1; 新檔名 = 原檔名; while(1) { if (新檔名之檔案存在) 新檔名 = 原檔名開頭加一個編號 $i ; $i 遞增1; } else 搬動暫存檔到網站並給目前產生的檔名; 離開迴圈;

範例 chap07/file_rename.htm file_rename.htm file_rename_action.php <html> <head><title>PHP範例程式</title></head> <body> <? $F1_name = $_FILES['F1']['name']; $F1_type = $_FILES['F1']['type']; $F1_size = $_FILES['F1']['size']; $F1_tmp_name = $_FILES['F1']['tmp_name']; $i=1; $F1_name_new = $F1_name; while(1) { if( file_exists("file/$F1_name_new") ) $F1_name_new = $i . "_" . $F1_name; $i++; } else move_uploaded_file($F1_tmp_name, "file/$F1_name_new"); break; echo "檔案上傳完畢, 檔名: $F1_name_new"; ?> </body> </html> <html> <head><title>PHP範例程式</title></head> <body> <form method="POST" enctype="multipart/form-data" action="file_rename_action.php"> <input type="file" name="F1" size="20"><br> <input type="submit" value="送出" name="B1"><br> </form> </body> </html> file_rename.htm file_rename_action.php

練習 試著使用PHP將上一章的通訊錄之新增功能改成 可以上傳使用者圖片,並將檔名能夠插入MySQL 之addressbook資料表中。

課程大綱 HTML表單元件:檔案上傳 PHP檔案上傳相關語法 使用MySQL管理上傳檔案 下載來自MySQL的檔案

使用MySQL管理檔案 使用PHP+MySQL建立一個線上檔案管理系統。 範例:chap07/document.php

使用MySQL管理上傳檔案 使用步驟 建立MySQL檔案上傳資料表 建立HTML檔案上傳表單網頁 使用PHP接收並處理檔案

STEP1: MySQL檔案上傳資料表 在MySQL中,建立一個document資料表,其中 欄位包括: sn: 資料序號 name: 檔案名稱 type: 檔案類型 size: 檔案大小 title: 檔案說明 file: 檔案內容

BLOB類型 在MySQL中,使用BLOB來存取一個檔案,其中 相關類似包括: PHP預設最大上傳檔案大小為2MB TINYBLOB: 最大容量255Bytes BLOB: 最大容量約64KB MEDIUMBLOB: 最大容量約16MB LONGBLOB: 最大容量約4GB PHP預設最大上傳檔案大小為2MB

STEP2: HTML檔案上傳表單網頁 在HTML表單中,建立一個檔案上傳元件、文字方 塊、送出按鈕: 檔案上傳: name=F1 文字方塊: name=T1 送出按鈕: name=B1 (按鈕名稱無所謂,之後用不到) (chap07/document_add.php)

STEP3: PHP接收並處理檔案 使用超級全域變數$_FILES接收檔案資訊。 這次我們不使用資料搬動的方式,而是要將暫存 檔以二進位檔方式讀出再傳到MySQL PHP二進位開檔與讀檔之函式 $fd = fopen("檔案名稱", "rb") 將檔案以二進位讀取模式(rb), 以檔案識別變數開啟 $file = fread($fd, 檔案大小) 將檔案識別變數所代表的檔案讀出指定單位大小放到$file變數中 PHP將檔案中之特殊字元前加入'\'之函式 $file = addslashes($file) 資料要傳到MySQL是透過SQL語法,如同之前所說在字串的雙引號中, 有些文字代表特殊效果,所以需要在前加 \ 例如: $, ", ', \, ...

STEP4: 插入MySQL表單 資料準備就讀後,呼叫mysql_query用SQL之 INSERT命令把資料傳到MySQL中的資料表中即可 完全檔案上傳之動作 (程式碼見: chap07/document_add_action.php)

課程大綱 HTML表單元件:檔案上傳 PHP檔案上傳相關語法 使用MySQL管理上傳檔案 下載來自MySQL的檔案

還原MySQL中的檔案 當使用者想透過網頁將檔案讀出時,程式設計師 必須使用PHP將MySQL中的檔案讀出,並還原當 初使用者上傳之檔名讓使用者下載。 PHP產生網頁標頭之函式 header("內容"); 有用的範例 通知網頁瀏覽器以某檔案類型開啟此檔 header("Content-type: 檔案類型"); 回復檔案名稱並以提供下載 header("Content-Disposition: attachment; filename=檔案名稱"); (程式碼見: chap07/document_download.php)