本文目錄一覽:
php上傳文件和參數
input name=”pic” type=”file” /比如你的圖片上傳是這樣寫的,那在獲取的時候$_FILES[‘pic’][‘name’]就是了,至於表單其他input type=’text’直接用$_POST[‘名字’]或$_GET[‘名字’]就能獲取到了,如果同時有好幾個上傳的圖片又要分類的話,$_FILES[‘pic’][‘name’]這個pic換成其他上傳框的名字就ok
php 上傳文件
剛學php時寫的一個類,可以給你參考下,你所說的功能基本上也都有。
這個用作學習還是不錯的。
?php
class fileup{
private $savefilepath; //保存路徑
private $filetype=array(‘gif’,’jpg’,’jpeg’,’png’); //文件類型
private $maxsize=1000000; //上傳最大的尺寸 默認值設置為1M
private $savename=true; //是否默認隨機名稱
private $upfileform; //上傳文件表單的name值
//以下是不可以修改的成員屬性
private $tmpname; //上傳的臨時文件名
private $upfilename; //上傳文件的名稱
private $uperror;
private $newname; //新的文件名
//private $upfiletype; //上傳文件的類型
private $upfilesize; //上傳文件的大小。
private $filehz; //文件名的擴展名。
//構造方法
function __construct($upfileform,$savefilepath=’./upload/’){
$this-upfileform=$upfileform;
$this-savefilepath=rtrim($savefilepath,’/’);
$this-tmpname=$_FILES[$upfileform][‘tmp_name’];
$this-upfilename=$_FILES[$upfileform][‘name’];
$this-upfilesize=$_FILES[$upfileform][‘size’];
$this-uperror=$_FILES[$upfileform][‘error’];
$this-getnewname();
}
//設置文件上傳的參數,不設置為默認值。
function setfilepar($par){
$pars=array(‘filetype’,’maxsize’,’savename’);
foreach($par as $key=$value){
if(in_array($key,$pars)){
$this-$key=$value;
}else{
continue;
}
}
}
//檢查上傳
private function checkfileup(){
//判斷文件夾是否正確或文件夾是否有可寫入的許可權。
if(!is_dir($this-savefilepath)||!is_writable($this-savefilepath)){
$this-uperror=8;
return false;
}
//判斷文件名是否存在
if(is_file($this-newname)){
$this-uperror=9;
return false;
}
//判斷上傳文件的類型是否正確。
if(!in_array(strtolower($this-filehz),$this-filetype)){
$this-uperror=-1;
return false;
}
return true;
}
//獲取新的文件名字
private function getnewname(){
$tmp=explode(‘.’,$this-upfilename);
$this-filehz=$tmp[count($tmp)-1];
if(is_bool($this-savename)){
if($this-savename){
$this-newname=$this-savefilepath.’/’.date(‘YmdHis’).rand(10000,99999).’.’.$this-filehz;
}else{
$this-newname=$this-savefilepath.’/’.$this-upfilename;
}
}else{
$this-newname=$this-savefilepath.’/’.$this-savename.’.’.$this-filehz;
}
}
//獲取錯誤信息
private function getuperror(){
switch($this-uperror){
case 1: echo ‘上傳文件超過了系統指定的大小’; break;
case 2: echo ‘上傳文件超過了表單中指定的大小’; break;
case 3: echo ‘文件只有部分上傳’; break;
case 4: echo ‘沒有文件上傳’; break;
case 6: echo ‘找不到上傳的文件,系統錯誤’; break;
case 7: echo ‘文件寫入失敗’; break;
case 8: echo ‘文件路徑不存在,或不可寫’; break;
case 9: echo ‘文件名已經存在,請不要重複上傳’; break;
case -1: echo ‘不是指定上傳的文件’; break;
case -2: echo ‘請勿使用非法途徑上傳’; break;
case -3: echo ‘文件上傳失敗’; break;
default: ‘未知錯誤’; break;
}
}
function fileupload(){
if(!$this-checkfileup()||$this-uperror!=0){
$this-getuperror();
return false;
}else{
if(!is_uploaded_file($_FILES[$this-upfileform][‘tmp_name’])){
$this-uperror=-2;
$this-getuperror();
return false;
}else{
if(move_uploaded_file($_FILES[$this-upfileform][‘tmp_name’],$this-newname)){
return true;
}else{
$this-uperror=-3;
return false;
}
}
}
}
//獲取文件名
function getname(){
return $this-newname;
}
}
如何修改PHP上傳文件大小限制?
1. 在php.ini中,做如下修改:\x0d\x0a file_uploads = on\x0d\x0a upload_tmp_dir = /home/upload\x0d\x0a upload_max_filesize = 4000M\x0d\x0a post_max_size = 4000M\x0d\x0a 一般地,設置好上述四個參數後,上傳8M的大體積文件,只設置上述四項還一定能行的通。除非你的網路真有100M/S的上傳高速,否則你還得關心關心下面的參數:\x0d\x0a max_execution_time = 600\x0d\x0a max_input_time = 600\x0d\x0a memory_limit = 128M\x0d\x0a\x0d\x0a2. 在要確認上傳的 里加入以下行:\x0d\x0a \x0d\x0a3. $_FILES[“userfile”][“error”]返回值說明:\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 1 文件大小超過了PHP.ini中的文件限制\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 2 文件大小超過了瀏覽器限制\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 3 文件部分被上傳\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 4 沒有找到要上傳的文件\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 5 伺服器臨時文件夾丟失\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = 6 文件寫入到臨時文件夾出錯\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = -1 末充許的類型\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = -2 文件過大,上傳文件不能超過{$this-maxSize}個位元組\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = -3 上傳失敗\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = -4 建立存放上傳文件目錄失敗,請重新指定上傳目錄\x0d\x0a $_FILES[‘teacher_pic’][‘error’] = -5 必須指定上傳文件的路徑
怎樣用PHP實現文件上傳
創建一個文件上傳表單
允許用戶從表單上傳文件是非常有用的。
請看下面這個供上傳文件的 HTML 表單:
html
body
form action=”upload_file.php” method=”post”
enctype=”multipart/form-data”
label for=”file”Filename:/label
input type=”file” name=”file” id=”file” /
br /
input type=”submit” name=”submit” value=”Submit” /
/form
/body
/html
請留意如下有關此表單的信息:
form 標籤的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進位數據時,比如文件內容,請使用 “multipart/form-data”。
input 標籤的 type=”file” 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。
注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。
創建上傳腳本
“upload_file.php” 文件含有供上傳文件的代碼:
?php
if ($_FILES[“file”][“error”] 0)
{
echo “Error: ” . $_FILES[“file”][“error”] . “br /”;
}
else
{
echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;
echo “Type: ” . $_FILES[“file”][“type”] . “br /”;
echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;
echo “Stored in: ” . $_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 文件,文件大小必須小於 20 kb:
?php
if ((($_FILES[“file”][“type”] == “image/gif”)
|| ($_FILES[“file”][“type”] == “image/jpeg”)
|| ($_FILES[“file”][“type”] == “image/pjpeg”))
($_FILES[“file”][“size”] 20000))
{
if ($_FILES[“file”][“error”] 0)
{
echo “Error: ” . $_FILES[“file”][“error”] . “br /”;
}
else
{
echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;
echo “Type: ” . $_FILES[“file”][“type”] . “br /”;
echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;
echo “Stored in: ” . $_FILES[“file”][“tmp_name”];
}
}
else
{
echo “Invalid file”;
}
?
注釋:對於 IE,識別 jpg 文件的類型必須是 pjpeg,對於 FireFox,必須是 jpeg。
保存被上傳的文件
上面的例子在伺服器的 PHP 臨時文件夾創建了一個被上傳文件的臨時副本。
這個臨時的複製文件會在腳本結束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:
?php
if ((($_FILES[“file”][“type”] == “image/gif”)
|| ($_FILES[“file”][“type”] == “image/jpeg”)
|| ($_FILES[“file”][“type”] == “image/pjpeg”))
($_FILES[“file”][“size”] 20000))
{
if ($_FILES[“file”][“error”] 0)
{
echo “Return Code: ” . $_FILES[“file”][“error”] . “br /”;
}
else
{
echo “Upload: ” . $_FILES[“file”][“name”] . “br /”;
echo “Type: ” . $_FILES[“file”][“type”] . “br /”;
echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kbbr /”;
echo “Temp file: ” . $_FILES[“file”][“tmp_name”] . “br /”;
if (file_exists(“upload/” . $_FILES[“file”][“name”]))
{
echo $_FILES[“file”][“name”] . ” already exists. “;
}
else
{
move_uploaded_file($_FILES[“file”][“tmp_name”],
“upload/” . $_FILES[“file”][“name”]);
echo “Stored in: ” . “upload/” . $_FILES[“file”][“name”];
}
}
}
else
{
echo “Invalid file”;
}
?
上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。
注釋:這個例子把文件保存到了名為 “upload” 的新文件夾。
PHP文件上傳$_FILES參數
1. 表單要有 enctype=”multipart/form-data”
2. input type=”file” name=”定義名字” / 要有 name屬性值
3. 檢測伺服器 是不是支持 文件上傳 執行 phpinfo() 然後 看看
file_uploads 項 是不是 on 如果是 off就不能進行文件上傳了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240538.html