Ch11 檔案存取 網頁程式設計.

Slides:



Advertisements
Similar presentations
《计算机网络技术》 动态网页制作技术 常用HTML控件课程积件 杨 姝.
Advertisements

第 4 章 PHP 基本語法.
計算機程式語言實習課.
認證與檔案上傳 學習目標 基本原理 資料庫連線與選擇 執行查詢 取回答案 SQL Injection.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
引入檔 (include, require) 檔案處理 檔案上傳
【PHP程式設計】 實作一:計算BMI.
第四章 網頁表單與資料傳遞.
留言版 1.先Create一個留言板的table
Ch11 檔案上傳及電子郵件 WEB程式設計.
PHP與SQL語法存取MySQL SQL
JDK 安裝教學 (for Win7) Soochow University
基礎linux指令說明 Part 1 資訊組 陳宜徽.
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
JAVA 程式設計與資料結構 第六章 輸出與輸入.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Lesson 5 :基礎應用二(留言版) (2004/08/20).
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
SQL Stored Procedure SQL 預存程序.
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
PHP 程式流程控制結構.
網頁切換移轉 JS vs. ASP.NET.
進階 WWW 程式設計 -- PHP 語言結構(三) 靜宜大學資訊管理學系 蔡奇偉副教授 2003
|13 檔案資料讀寫.
App Inventor2呼叫PHP存取MySQL
檔案與磁碟的基本介紹.
Java 程式設計 講師:FrankLin.
檔案傳輸協定(FTP) 9.1 什麼是檔案傳輸協定 9.2 常用的FTP指令 9.3 Windows內建的FTP 9.4 瀏覽器的FTP功能
第10章 檔案與資料夾處理 10-1 檔案的基礎 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫 10-4 檔案與資料夾處理.
網頁切換移轉 JS vs. ASP.NET.
PHP 變數、常數與運算子 變數 常數 運算子
表單(Form).
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
FileUpload控制項 建國科技大學 資管系 饒瑞佶 2007年.
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
檔案上傳
Chap5 PHP程式設計進階 授課講師:.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
HTML – 超連結與圖片 資訊教育.
表單(Form).
表格(HTML – FORM).
SuperGIS DataManager的使用
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
Unix 指令1.
期末考.
HTML 103 互動式網頁 助教:黃毓瑩.
個人網路空間 資訊教育.
PHP 5 引入檔 及 檔案處理 引入檔 檔案處理 檔案上傳.
GridView操作 (II).
引用檔案.
Flash 8:開口中 從Y:\ 複製『開口中.fla』到 D:\ 更改名稱為:s3x99 (你的班號) 雙按開啟檔案 2019年5月7日
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
第6章 PHP的数据采集.
表格(HTML – FORM)
挑戰C++程式語言 ──第7章 輸入與輸出.
MiRanda Java Interface v1.0的使用方法
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
如何從政大圖書館館藏目錄匯出書目至EndNote
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编.
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

Ch11 檔案存取 網頁程式設計

大綱 存取伺服器端的路徑 存取伺服器端的資料夾 存取伺服器端的檔案 讀取伺服器端的文字檔 寫入伺服器端的文字檔 2018/11/22

存取伺服器端的路徑 取得檔案名稱:basename() 函式可以用來取得指定路徑的檔案名稱,其語法如下 : 取得路徑資訊: pathinfo() 函式可以用來將指定路徑分割為路徑名稱dirname、檔案名稱basename及副檔名extension三個部分,其語法如下: 取得絕對路徑:realpath() 函式可以用來取得檔案的絕對路徑,其語法如下: basename(string path [, string suffix]) pathinfo(string path) realpath(string path) 2018/11/22

範例1: <?php $path = $_SERVER['PHP_SELF']; echo '目前網頁的路徑:' . $path .'<br>'; echo basename($path) . '<br>'; //顯示目前網頁的檔案名稱 echo basename($path, '.php') . '<br>'; //顯示目前網頁的檔案名稱 $pathInfo = pathinfo($path); echo '檔案所在的路徑名稱:' . $pathInfo['dirname'] . '<br>'; echo '檔案名稱:' . $pathInfo['basename'] . '<br>'; echo '檔案附檔名:' . $pathInfo['extension'] . '<br>'; $rePath = realpath(basename($path)); echo '目前檔案+絕對路徑:' . $rePath . '<br>'; $rePathInfo = pathinfo($rePath); echo '目前絕對路徑:' . $rePathInfo['dirname'] . '<br>'; ?> 2018/11/22

存取伺服器端的資料夾(1/4) 建立資料夾:mkdir() 函式可以用來建立資料夾,其語法如下: 例如:  例如: 取得目前工作資料夾: getcwd() 函式可以用來取得目前工作資料夾 切換目前工作資料夾: chdir() 函式可以用來將目前工作資料夾切換到其它資料夾 mkdir(string pathname [, int mode [, bool recursive]]) mkdir("C:\\myPHP\\pictures"); mkdir("C:\\myPHP\\pictures", NULL, TRUE); mkdir("pictures"); getcwd(); chdir(string directory) chdir("C:\"); mkdir("pictures"); 2018/11/22

存取伺服器端的資料夾(2/4) 刪除資料夾: rmdir() 函式可以用來刪除資料夾, 判斷路徑是否為資料夾: is_dir() 函式可以用來判斷路徑是否為資料夾 判斷資料夾是否存在: file_exists() 函式可以用來判斷資料夾是否存在, rmdir(string dirname) rmdir("C:\\myPHP\\pictures"); is_dir(string filename) file_exists(string filename) 2018/11/22

存取伺服器端的資料夾(3/4) 變更資料夾權限: chmod() 函式可以用來變更資料夾權限, 取得資料夾的父資料夾名稱:dirname() 函式可以用來取得資料夾的父資料夾名稱, 參數path為欲取得父資料夾名稱的資料夾,例如dirname("C:\\Windows\\system32\\drivers") 會傳回 "C:\Windows\system32“ chmod(string filename, int mode) dirname(string path) 2018/11/22

存取伺服器端的資料夾(4/4) 讀取資料夾所包含的檔案名稱及子資料夾名稱: scandir() 函式可以用來讀取資料夾所包含的檔案名稱及子資料夾名稱 scandir(string directory [, int sorting_order]) 2018/11/22

存取伺服器端的檔案(1/3) 判斷檔案是否存在: file_exists() 函式可以用來判斷檔案或資料夾是否存在 判斷指定的路徑是否為檔案: is_file() 函式可以用來判斷指定的路徑是否為檔案 file_exists(string filename) is_file(string filename) 2018/11/22

存取伺服器端的檔案(2/3) 複製檔案: copy() 函式可以用來複製檔案 刪除檔案: unlink() 函式可以用來刪除檔案 變更檔案名稱: rename() 函式可以用來變更檔案名稱或資料夾名稱 copy(string source, string dest) copy("C:\\php\\license.txt", "license (new).txt") unlink(string filename) rename(string oldname, string newname) rename("temp.php", "temp.bak"); 2018/11/22

存取伺服器端的檔案(3/3) 取得檔案屬性:下列函式可以用來取得檔案屬性。 fileatime(string filename) filectime(string filename) filemtime(string filename) filesize(string filename) is_readable(string filename) is_writable(string filename) 2018/11/22

讀取伺服器端的文字檔(1/3) 使用fread() 函式讀取文字檔:讀取文字檔的流程為「開啟檔案」→「讀取檔案」→「關閉檔案」 (nl2br函式是將參數中的換行符號,如\n,\r,\r\n,轉換為<br>) 2018/11/22

讀取伺服器端的文字檔(2/3) 使用fgets() 函式讀取文字檔:可以從檔案指標處讀取一行資料 2018/11/22

讀取伺服器端的文字檔(3/3) 使用file_get_contents() 函式讀取文字檔:無須經過開啟檔案及關閉檔案的動作即可讀取檔案全部內容 file_get_contents(string filename) 2018/11/22

寫入伺服器端的文字檔(1/3) 使用fwrite()、fputs() 函式寫入文字檔: fputs() 函式是fwrite() 函式的別名,兩者功能相同 fwrite(resource handle, string str [, int length]) fputs(resource handle, string str [, int length]) 2018/11/22

寫入伺服器端的文字檔(2/3) 2018/11/22

寫入伺服器端的文字檔(3/3) 使用file_put_contents() 函式寫入文字檔:無須經過開啟檔案及關閉檔案的動作即可將指定的內容寫入檔案 file_put_contents(string filename, string data) 2018/11/22

實作專題:檔案上傳 2018/11/22

Step 1: 設定php.ini 開啟?:\xwamp\php\php.ini組態設定檔,然後設定下列參數: file_uploads=On 允許經由HTTP通訊協定進行檔案上傳 upload_tmp_dir=??? 設定檔案下傳時所要使用的暫存目錄,如果沒有設定,會用os所設定的 upload_max_filesize=64M 原預設為2M,為了確保後續不會因上傳檔案過大而失敗 post_max_size=64M POST方式允許傳送的最大容量 max_input_time=100 上傳檔案所花費的時間若超過100秒,將會上傳失敗 2018/11/22

Step 2: 撰寫前端的檔案上傳介面 <form method="post" action="upload_01.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1048576"> < input type="file" name="myfile" size="50"><br><br> < input type="submit" value="上傳"> < input type="reset" value="重新設定"> </form> 2018/11/22

Step 3:撰寫後端的處理程式 在瀏覽者選擇好要上傳的檔案並按 [上傳] 後,檔案就會被上傳至Web伺服器的暫存資料夾,暫存檔的名稱為phpxxx.tmp,xxx為流水號。 3-1 取得檔案資訊 後端的處理程式可以透過下列變數取得上傳檔案的資訊: $_FILES["欄位名稱"]["name"] $_FILES["欄位名稱"]["type"] $_FILES["欄位名稱"]["size"] $_FILES["欄位名稱"]["tmp_name'"] $_FILES["欄位名稱"]["error"] 3-2 移動檔案 接下來,我們可以使用move_uploaded_file() 函式將暫存檔案移至特定的資料夾,其語法如下: move_uploaded_file(string filename, string destination) 2018/11/22

範例2:上傳一個檔案 前端:(project1_page1.html) <body> <h1 align="center">檔案上傳</h1> <h5 align="center">歡迎使用檔案上傳服務,您可以一次上傳一個檔案</h5> <form method="post" action="Project1_upload.php" enctype="multipart/form-data"> <!-設定可上傳的檔案大小為1M=1048576 -> <input type="hidden" name="MAX_FILE_SIZE" value="1048576"> <input type="file" name="myfile" size="50"><br><br> <input type="submit" value="上傳"> <input type="reset" value="重新設定"> </form> </body> 2018/11/22

範例2:上傳一個檔案 後端:Project1_upload.php //指定檔案儲存目錄及檔名 $upload_dir = "./upload files/"; //iconv()函式是將檔名轉換為Big5編碼,可避免上傳中文檔名時,發生錯誤 $upload_file = $upload_dir . iconv("UTF-8", "Big5", $_FILES["myfile"]["name"]); //將上傳的檔案由暫存目錄移至指定之目錄 if(move_uploaded_file($_FILES["myfile"]["tmp_name"], $upload_file)) { echo "<strong>檔案上傳成功</strong><hr>"; //顯示檔案資訊 echo "檔案名稱:" . $_FILES["myfile"]["name"] . "<br>"; echo "暫存檔案:" . $_FILES["myfile"]["tmp_name"] . "<br>"; echo "檔案大小:" . $_FILES["myfile"]["size"] . "<br>"; echo "檔案種類:" . $_FILES["myfile"]["type"] . "<br>"; echo "<p><a href='javascript:history.back()'>繼續上傳</a></p>"; } else { echo "檔案上傳失敗(" . $_FILES["myfile"]["error"] . ")<br><br>"; echo "<a href='javascript:history.back()'>重新上傳</a>"; ?> 2018/11/22

範例3:上傳多個檔案 前端:(project2_page1.html) <body> <h1 align="center">檔案上傳</h1> <h5 align="center">歡迎使用檔案上傳服務,您可以一次上傳多個檔案</h5> <form method="post" action="Project2_upload.php" enctype="multipart/form-data"> <!-設定可上傳的檔案大小為1M=1048576 -> <input type="hidden" name="MAX_FILE_SIZE" value="1048576"> <input type="file" name="myfile[]" size="50"><br><br> <input type="submit" value="上傳"> <input type="reset" value="重新設定"> </form> </body> 2018/11/22

範例3:上傳多個檔案 後端:Project2_upload.php //指定檔案儲存目錄及檔名 $upload_dir = "./upload files/"; //計算上傳的檔案個數 $i = count($_FILES["myfile"]["name"]); for($j=0; $j <$i; $j++) { //iconv()函式是將檔名轉換為Big5編碼,可避免上傳中文檔名時,發生錯誤 $upload_file = $upload_dir . iconv("UTF-8", "Big5", $_FILES["myfile"]["name"][$j]); //將上傳的檔案由暫存目錄移至指定之目錄 if(move_uploaded_file($_FILES["myfile"]["tmp_name"][$j], $upload_file)) { echo "<strong>檔案上傳成功</strong><hr>"; //顯示檔案資訊 echo "檔案名稱:" . $_FILES["myfile"]["name"][$j] . "<br>"; echo "暫存檔案:" . $_FILES["myfile"]["tmp_name"][$j] . "<br>"; echo "檔案大小:" . $_FILES["myfile"]["size"][$j] . "<br>"; echo "檔案種類:" . $_FILES["myfile"]["type"][$j] . "<br>"; echo "上傳成功<hr>"; } else echo "檔案上傳失敗(" . $_FILES["myfile"]["error"][$j] . ")<br><br>"; echo "<p><a href='javascript:history.back()'>繼續上傳</a></p>"; ?> 2018/11/22

範例4:讀取+寫入檔案內容 Project3_page1.php <body>  <h3 align="center">讀入檔案並編修</h3> <form method="post" action="project3_write.php" enctype="multipart/form-data"> <textarea name="contents" cols="50" rows="5"> <?php $filename = fopen("qq1.txt", "r+"); while($line = fgets($filename)) { echo $line; } fclose($filename); ?> </textarea> <input type="submit" value="存檔"> <input type="reset" value="重新設定"> </form> </body> 2018/11/22

範例4:讀取+寫入檔案內容 Project3_write.php $filename = fopen("qq1.txt", "w+"); if(flock($filename, LOCK_EX|LOCK_NB)) { //$result = nl2br($_POST["contents"]); //$result = str_replace(chr(13).chr(10), "<br>",$_POST["contents"]); $result = $_POST["contents"]; fwrite($filename, $result); flock($filename, LOCK_UN); } else echo "錯誤!檔案已被他人使用中"; fclose($filename); echo "<p><a href='javascript:history.back()'>回上一頁</a></p>"; ?> 2018/11/22