php上傳文件和參數,php上傳文件和參數不一致

本文目錄一覽:

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-hant/n/240538.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:23
下一篇 2024-12-12 12:23

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Spring Boot中發GET請求參數的處理

    本文將詳細介紹如何在Spring Boot中處理GET請求參數,並給出完整的代碼示例。 一、Spring Boot的GET請求參數基礎 在Spring Boot中,處理GET請求參…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Python Class括號中的參數用法介紹

    本文將對Python中類的括號中的參數進行詳細解析,以幫助初學者熟悉和掌握類的創建以及參數設置。 一、Class的基本定義 在Python中,通過使用關鍵字class來定義類。類包…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 全能編程開發工程師必知——DTD、XML、XSD以及DTD參數實體

    本文將從大體介紹DTD、XML以及XSD三大知識點,同時深入探究DTD參數實體的作用及實際應用場景。 一、DTD介紹 DTD是文檔類型定義(Document Type Defini…

    編程 2025-04-29

發表回復

登錄後才能評論