PHP 開啟檔案瀏覽器並傳遞檔案
PHP 檔案上傳
通過 PHP,可以把檔案上傳到伺服器。
本章節例項在 test 專案下完成,目錄結構為:
test |-----upload # 檔案上傳的目錄|-----form.html # 表單檔案|-----upload_file.php # php 上傳程式碼
建立一個檔案上傳表單
允許使用者從表單上傳檔案是非常有用的。
請看下面這個供上傳檔案的 HTML 表單:
<html><head><metacharset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><formaction="upload_file.php"method="post"enctype="multipart/form-data"><labelfor="file">檔名:</label><inputtype="file"name="file"id="file"><br><inputtype="submit"name="submit"value="提交"></form></body></html>
將以上程式碼儲存到 form.html 檔案中。
有關上面的 HTML 表單的一些注意項列舉如下:
- <form> 標籤的 enctype 屬性規定了在提交表單時要使用哪種內容型別。在表單需要二進位制資料時,比如檔案內容,請使用 "multipart/form-data"。
- <input> 標籤的 type="file" 屬性規定了應該把輸入作為檔案來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。
註釋:允許使用者上傳檔案是一個巨大的安全風險。請僅僅允許可信的使用者執行檔案上傳操作。
建立上傳指令碼
"upload_file.php" 檔案含有供上傳檔案的程式碼:
<?php if($_FILES["file"]["error"]>0){ echo "錯誤:". $_FILES["file"]["error"]."<br>";}else{ echo "上傳檔名: ". $_FILES["file"]["name"]."<br>"; echo "檔案型別: ". $_FILES["file"]["type"]."<br>"; echo "檔案大小: ".($_FILES["file"]["size"]/1024)." kB<br>"; echo "檔案臨時儲存的位置: ". $_FILES["file"]["tmp_name"];}?>
通過使用 PHP 的全域性陣列 $_FILES,你可以從客戶計算機向遠端伺服器上傳檔案。
第一個引數是表單的 input name,第二個下標可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。如下所示:
- $_FILES["file"]["name"] - 上傳檔案的名稱
- $_FILES["file"]["type"] - 上傳檔案的型別
- $_FILES["file"]["size"] - 上傳檔案的大小,以位元組計
- $_FILES["file"]["tmp_name"] - 儲存在伺服器的檔案的臨時副本的名稱
- $_FILES["file"]["error"] - 由檔案上傳導致的錯誤程式碼
這是一種非常簡單檔案上傳方式。基於安全方面的考慮,您應當增加有關允許哪些使用者上傳檔案的限制。
上傳限制
在這個指令碼中,我們增加了對檔案上傳的限制。使用者只能上傳 .gif、.jpeg、.jpg、.png 檔案,檔案大小必須小於 200 kB:
<?php // 允許上傳的圖片字尾 $allowedExts = array("gif","jpeg","jpg","png"); $temp = explode(".", $_FILES["file"]["name"]); $extension =end($temp);// 獲取檔案字尾名if((($_FILES["file"]["type"]=="image/gif")||($_FILES["file"]["type"]=="image/jpeg")||($_FILES["file"]["type"]=="image/jpg")||($_FILES["file"]["type"]=="image/pjpeg")||($_FILES["file"]["type"]=="image/x-png")||($_FILES["file"]["type"]=="image/png"))&&($_FILES["file"]["size"]<204800)// 小於 200 kb&& in_array($extension, $allowedExts)){if($_FILES["file"]["error"]>0){ echo "錯誤:: ". $_FILES["file"]["error"]."<br>";}else{ echo "上傳檔名: ". $_FILES["file"]["name"]."<br>"; echo "檔案型別: ". $_FILES["file"]["type"]."<br>"; echo "檔案大小: ".($_FILES["file"]["size"]/1024)." kB<br>"; echo "檔案臨時儲存的位置: ". $_FILES["file"]["tmp_name"];}}else{ echo "非法的檔案格式";}?>
儲存被上傳的檔案
上面的例項在伺服器的 PHP 臨時資料夾中建立了一個被上傳檔案的臨時副本。
這個臨時的副本檔案會在指令碼結束時消失。要儲存被上傳的檔案,我們需要把它拷貝到另外的位置:
<?php // 允許上傳的圖片字尾 $allowedExts = array("gif","jpeg","jpg","png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension =end($temp);// 獲取檔案字尾名if((($_FILES["file"]["type"]=="image/gif")||($_FILES["file"]["type"]=="image/jpeg")||($_FILES["file"]["type"]=="image/jpg")||($_FILES["file"]["type"]=="image/pjpeg")||($_FILES["file"]["type"]=="image/x-png")||($_FILES["file"]["type"]=="image/png"))&&($_FILES["file"]["size"]<204800)// 小於 200 kb&& in_array($extension, $allowedExts)){if($_FILES["file"]["error"]>0){ echo "錯誤:: ". $_FILES["file"]["error"]."<br>";}else{ echo "上傳檔名: ". $_FILES["file"]["name"]."<br>"; echo "檔案型別: ". $_FILES["file"]["type"]."<br>"; echo "檔案大小: ".($_FILES["file"]["size"]/1024)." kB<br>"; echo "檔案臨時儲存的位置: ". $_FILES["file"]["tmp_name"]."<br>";// 判斷當期目錄下的 upload 目錄是否存在該檔案// 如果沒有 upload 目錄,你需要建立它,upload 目錄許可權為 777if(file_exists("upload/". $_FILES["file"]["name"])){ echo $_FILES["file"]["name"]." 檔案已經存在。 ";}else{// 如果 upload 目錄不存在該檔案則將檔案上傳到 upload 目錄下 move_uploaded_file($_FILES["file"]["tmp_name"],"upload/". $_FILES["file"]["name"]); echo "檔案儲存在: "."upload/". $_FILES["file"]["name"];}}}else{ echo "非法的檔案格式";}?>
相關推薦
PHP 開啟檔案瀏覽器並傳遞檔案
PHP 檔案上傳 通過 PHP,可以把檔案上傳到伺服器。 本章節例項在 test 專案下完成,目錄結構為: test |-----upload # 檔案上傳的目錄|-----form.html # 表單檔案|-----uplo
C#如何在資源管理器中開啟資料夾並定位檔案
private void OpenFolderAndSelectFile(String fileFullName) { System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessSt
PHP 開啟COM元件 讀取word檔案
1.先到PHP.INI中開啟COM選項,com.allow_dcom = true 2.我這裡的環境是PHP5.4.7,PHP 5.4.5後,com/dotnet 模組已經成了單獨的擴充套件,所以需要在PHP.ini中配置extension=php_com_dotnet.d
【筆記】window下 使用c++遍歷資料夾及其子資料夾和檔案,並列印檔案路徑及各檔案內容
這兩天一直在學習如何使用c++遍歷資料夾、讀取檔案內容和寫入檔案。 話不多說,直接上程式碼 /** 檔案功能:遞迴遍歷資料夾,遍歷資料夾及其子資料夾和檔案.列印資料夾名稱、檔名稱和檔案數目*** 參考:https://www.cnblogs.com/collectionne/p/679230
java連線hdfs檔案系統並訪問檔案
package hadoop; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import org.apache.
JAVA-阿里雲OSS檔案下載並將檔案壓縮為ZIP格式儲存
一,引言 由於公司業務功能需求,需要從阿里雲OSS(Object Storage Service,物件儲存服務)中獲取檔案並打壓縮成ZIP格式,在這次開發中使用了OSS檔案下載相關服務,檔案壓縮功能使用的是commons-compress-x.x.jar中提供的功能。 二
利用boost遍歷路徑下所有檔案,並判斷檔案是否是資料夾
#include<boost/filesystem.hpp> void GetFileNameFromDir(const char* rootPath) { boost::filesystem::path dir(rootPath); if (b
flume實現監控檔案,並將檔案內容傳入kafka的,kafka在控制檯實現消費
在flume的配置裡建一個檔案flume-kafka.conf 生產者產生的資料放在/home/hadoop/c.txt中 topic消費c.txt中的檔案 a1.sources = s1
javaSE (三十)IO流異常處理、圖片加密處理、輸入檔案路徑並拷貝檔案內容、在檔案中鍵入內容
1、IO流異常處理: IO流異常處理一般可以寫得如下這麼複雜(面試備用) alt + shift + z 直接try-catch ,不過沒有加finally 因為作用域的問題,需要在外面建立BufferedInputStream物件並且初始化為null(要是不初始化,就
6、使用IO流實現檔案複製並修改檔案字尾
程式設計題目: 6.編寫一個程式,將D:\java目錄下的所有.java檔案複製到D:\jad目錄下,並將原來檔案的副檔名從.java改為.jad。 示例程式碼: package program.stream.exercise06; impo
Python 遍歷資料夾中的檔案,並將檔案放到列表中
最經剛開始接觸Python,學習了用Python實現遍歷資料夾裡的檔案(只遍歷檔案不要目錄),並將這些檔案放到一個列表中 廢話不多說,直接上程式碼 def allDir(path): f=[] for root,dirs,files in o
使用pydicom讀取dicom檔案,並對檔案做一些簡單操作
#! /usr/bin/python # -*- coding: utf-8 -*- import dicom import pylab ds=dicom.read_file("/home/s/data/LungCancer/CT/benign/contrast/60282
使用a標籤開啟新頁面並傳遞引數
使用js的方式可以實現a標籤傳遞引數 <a href="#" onclick="ulrHtml('引數');"> //開啟一個新的頁面並傳遞引數 function
讀取檔案流並寫入檔案流
Stream stream = File.OpenRead(Server.MapPath("0.jpg")); long len = stream.Length; byte[] buff = new byte[len]; s
c++builder選擇檔案,並得到檔案路徑!OpenDialog Edit!
首先需要一個Edit控制元件,一個Button和一個OpenDialog Edit命名為urlOpen,Button為btnOpen,OpenDialog為OpenDialog1 那麼在btnOpen
java處理txt檔案,並生成檔案
@Test public void transfer() throws IOException{ String tx = null; FileInputStream fis = new Fi
java建立檔案,並向檔案中寫入字串,讀取字串到螢幕
public class FileTest01 { public static void writeFileString() { File file = new File("E:\\zkn")
shell 遍歷目錄下字尾名為.html的檔案,並替換檔案中內容
1、shell查詢 .html檔案,例: find /usr/local/guotom/webapps/ZingMH/nodeJs/tpls/views/ -type f -name '*.html' 2、替換方法 sed -i "s/邀請/呵呵/g"【將邀請替換為呵呵】
python2.7 開啟ie瀏覽器並開啟指定網頁
# -*- coding: utf-8 -*-import webbrowser,os,timebase_path = 'F:\webapps' #重啟日誌資訊檔案的路徑log_file = base_path + '\%s.log' %(time.strftime('%Y
ASP.NET Core WEB API 使用element-ui檔案上傳元件el-upload執行手動檔案檔案,並在檔案上傳後清空檔案
前言: 從開始學習Vue到使用element-ui-admin已經有將近快兩年的時間了,在之前的開發中使用element-ui上傳元件el-upload都是直接使用檔案選取後立即選擇上傳,今天剛好做了一個和之前類似的檔案選擇上傳的需求,不過這次是需要手動點選按鈕把檔案上傳到伺服器中進行資料匯入,而且最多隻