1. 程式人生 > >PHP檔案上傳與下載

PHP檔案上傳與下載

這篇文章主要講的是關於檔案上傳與下載的涉及到的一些知識,在這裡總結一下,方便以後自己查閱。

一、檔案上傳

(1)php.ini配置檔案

//之前有一個朋友找我一起翻譯php.ini檔案,當時不以為然,覺得這些配置不懂得時候就上網搜搜就行了,但通過最近練手寫模組開發的時候,發現有些東西如果你不知道,不去了解那麼你就可能永遠也接觸不到那個點上。在php.ini中有很多輔助開發以及其他方面的相關配置,瞭解這些東西,個人覺得能使你對php有一種直觀的理解,一種有點到線再到面的全域性意識,基於此,在php的學習中,你會發現你需要什麼,哪方面有什麼不足。

進入正文,在php中實現小檔案上傳(2MB一下),是不需要在

php.ini中修改相關配置的。如果想實現大檔案上傳,有以下的3部分內容需要進行配置:

a、Resource limits(譯:資源限制)

引數

描述

max_execution_time

每個指令碼頁面完成執行操作的最大時間,單位是秒,設定為-1,則無限制

max_input_time

每個指令碼頁面處理請求資料的最大時間,單位是秒,也可以設定為-1

memory_limit

一個指令碼頁所能消耗的最大記憶體

//一般如果出現指令碼頁執行記憶體過大而導致的錯誤,不建議更改memory選項,這時候應該優先把頁面的資源如大陣列、相關物件釋放掉或者設定為空。

bpost_max_size

該引數指PHP通過表單POST所能接收的最大值,包括表單中的所有項。

cFile Uploads

File Uploads塊是專為檔案上傳設定。

引數

描述

file_uploads

是否允許HTTP上傳,預設為On,即為開啟,無需修改

upload_tmp_dir

檔案上傳時的臨時儲存目錄,如果沒指定就會用系統預設的臨時資料夾

upload_max_filesize

允許上傳檔案的最大值

(2)上傳表單的設定

//先來一段簡單的上傳程式碼

<form  method=”post” action=”” enctype=”multipart/form-data”>

<input tupe=”hidden” name=”MAX_FILE_SIZE” value=”1024000”>

<input name=”filename” type=”file” />

<input name=”submit” value=”submit”>

</form>

上面程式碼添加了一個hidden隱藏域,name值為MAX_FILE_SIZE,value是允許上傳的最大位元組數,當上傳檔案超過1MB時,$_FILES中的error值將返回2.該隱藏域的作用不是真正去限制上傳檔案的大小,它的作用在於避免使用者誤傳了大檔案而陷入了無盡的等待。

(3)預定義變數$_FILES(二維陣列)

PHP中使用$_FILES可以獲取上傳檔案的相關資訊,當然,前提是你的php.ini和表單設定沒有出錯。

引數

描述

$_FILE[filename][‘name’]

上傳檔案的檔名

$_FILE[filename][‘size’]

檔案大小

$_FILE[filename][‘tmp_name’]

檔案上傳時,首先在臨時檔案中被儲存成一個臨時檔案,該變數為檔名

$_FILE[filename][‘type’]

上傳檔案的型別,注意不是字尾

$_FILE[filename][‘error’]

儲存了檔案的錯誤程式碼

0:上傳成功;1:檔案大小超出ini設定;2:檔案大小超出表單設定

3:檔案沒有被全部上傳;4:沒有檔案被上傳;6:找不到臨時檔案

7:檔案寫入失敗

(4)上傳檔案函式

bool  move_uploaded_file(string filename,string destination)

filename:上傳檔案的臨時檔名,即$_FILES[‘tmp_name’]

destination:上傳後儲存的新的路徑和名稱

//php中,出於安全考慮,檔案上傳時首先被保留到指定的臨時目錄,move_uploaded_file()函式只是將檔案換個地方儲存。

(5)多檔案上傳

只是單檔案上傳的一種簡單變換,form表單中,只需要將表單中的檔案域使用陣列命名即可:

<input name=”filename[]” type=”file” / >

<input name=”filename[]” type=”file” / >

.....

處理檔案則通過迴圈遍歷的方式獲取檔案的資訊:

$_FILE[filename][‘name’][$i]

....

二、檔案下載

(1)超連結:

將檔案的相對路徑或者絕對路徑直接作為超連結即可。

(2)通過header()函式

header()函式屬於HTTP函式,它的作用是傳送一個原始的HTTP報頭,在PHP程式中有很多功能,詳情可以參考

相關推薦

php檔案下載的配置

php.ini中檔案上傳功能配置選項說明  用文字工具(推薦EditPlus)開啟php.ini 配置檔案,查詢 File Uploads ,在這個區域有以下3個選項:  file_uploads = On  是否允許HTTP檔案上傳。預設值為On允許HTTP檔案上傳,此選項

PHP檔案下載

這篇文章主要講的是關於檔案上傳與下載的涉及到的一些知識,在這裡總結一下,方便以後自己查閱。 一、檔案上傳 (1)php.ini配置檔案 //之前有一個朋友找我一起翻譯php.ini檔案,當時不以為然,覺得這些配置不懂得時候就上網搜搜就行了,但通過最近練手寫模組開發的時候,發

php檔案下載字元編碼問題

一直想吧php檔案上傳下載字元編碼問題總結一下,但是一拖再拖久而久之不曉得拖了多久,今天終於下定決心開始動手。 首先,php檔案一般用的utf-8編碼,而windows下的字元編碼一般都為gbk,所以在php在讀取本地的中文檔案時就會出現亂碼問題。如下圖所示 解決辦法:

PHP強化之13 - 檔案下載

一、檔案上傳 將客戶端檔案上傳到伺服器端,再將伺服器端的檔案(臨時檔案)移動到指定目錄即可。 1、form表單 檔案的上傳一般都是經過form表單來實現的。 1)標籤enctype屬性 表單中enctype="multipart/form-data"是用於設定表單的MIM

struts2實現檔案下載功能

一、Demo介紹 基於struts2框架,實現多檔案的上傳和下載功能。 實現原理圖: 部分介面圖: 上傳成功及下載頁面: 二、主要程式碼 uploadFile.jsp:在form表單中包含一個文字框(上傳使用者的姓名)和兩個檔案上傳選項. <%@

Spring Boot——檔案下載

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac

java web檔案下載

jsp程式碼(檔案上傳) <form id="upLoad" method="post">

struts2 檔案下載

檔案上傳: 三種上傳方案 虛擬路徑與真實路徑 /upload copyFile與copydirectory 檔案上傳的三種方案 1.將上傳的檔案以二進位制的形式存放到資料庫 oa系統 activiti工作流框架 2.將檔案上傳到檔案伺服器(硬碟足夠大)中 3.上傳到t

struts的檔案下載

struts的檔案上傳與下載後臺程式碼 package interceptor; import java.io.File; import java.io.IOException;import org.apache.commons.io.FileUtils; import web.Base

java:檔案下載

一.檔案上傳 1.注意: jsp提交方式必須為post 必須採用複雜格式 : enctype=“multipart/form-data” <form action="/upload" method="post" enctype="multipart/form

Spring 中的檔案下載控制

先建立根應用上下文配置,WebDemo/src/main/java/com/seliote/webdemo/config/RootContextConfig.java package com.seliote.webdemo.config; import org.springframework.c

Struts 2 檔案下載

單個檔案上傳 表單設定enctype="multipart/form-data“ 表單設定method="POST“ <s:file name="f1" label="logo"/> 多檔案上傳: 把所有的屬性改為陣列即可。 private File []f1;

Spring Boot 整合之檔案下載

1.匯入依賴 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId>

Java進階學習第十三天(檔案下載、JavaMail郵件開發)

一、檔案上傳與下載 1、檔案上傳 案例:登錄檔單/儲存商品等相關模組! 頭像 / 商品圖片(資料庫:儲存圖片路徑 / 圖片儲存到伺服器中指定的目錄) 2、檔案上傳要點 ① 表單提交方式:post ② 表單中有檔案上傳的表單項: <input type=”file” />

Struts2之檔案下載

1、檔案上傳三種方式: 將檔案以二進位制的形式儲存到資料庫中 activiti工作流框架  將檔案儲存到專門檔案伺服器(存放檔案用的Linux系統)中  直接將檔案儲存到伺服器(tomcat所在伺服器)中 2、檔案上傳的一個例項: action裡

基於TCP伺服器檔案下載

** ## service.c ** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include &l

檔案下載的簡單案例

檔案上傳       同時構建這個controller的過程中遇到最大的一個bug是: 得構建一個檢視資源管理器,因為controller中必須得認識ModelAndView,String型別 沒有ModelA

Java基於TCP協議的Socket客戶端檔案下載

import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.F

extjs列表中檔案下載(帶有重新命名操作)

下面是extjs列表中檔案上傳與下載: 如圖: 一、上傳 上傳按鈕: { xtype: 'button', width: 60, margin: '0 20', text: ' 上 傳 ', handler: 'onUploadClick' }] 上傳按

springMVC本地檔案下載

package com.minbao.controller; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.