重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
?php
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元宜州做網(wǎng)站,已為上家服務(wù),為宜州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
// $_FILES["file"]["type"] 其中["file"] html中標(biāo)簽的name
if ((($_FILES["file"]["type"] == "image/gif") //檢查上傳的文件類型為gif
|| ($_FILES["file"]["type"] == "image/jpeg")//檢查上傳的文件類型為jpg
|| ($_FILES["file"]["type"] == "image/pjpeg"))//檢查上傳的文件類型為jpeg
($_FILES["file"]["size"] 20000))//檢查上傳的文件大小
{
if ($_FILES["file"]["error"] 0)//判斷是否為錯(cuò)誤
{
echo "Return Code: " . $_FILES["file"]["error"] . "br /";//如果錯(cuò)誤則輸出錯(cuò)誤信息
}
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 /";//輸出臨時(shí)文件名稱
if (file_exists("upload/" . $_FILES["file"]["name"]))//判斷上傳文件是否存在upload文件夾里
{
echo $_FILES["file"]["name"] . " already exists. ";//如果存在則提示信息
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);//如果不存在則拷貝臨時(shí)文件到upload文件夾
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];//輸出上傳文件路徑+文件名稱
}
}
}
else
{
echo "Invalid file";//錯(cuò)誤信息
}
?
PHP上傳文件非常簡(jiǎn)單,你需要一個(gè)上傳的HTML文件(FORM),一個(gè)保存文件的PHP文件(保存),一個(gè)查詢上傳文件清單的工具。
真正實(shí)現(xiàn)完整功能的上傳和管理需要使用數(shù)據(jù)庫(kù),我的網(wǎng)站俱樂(lè)部里面上傳文件一開(kāi)放很快就傳了幾萬(wàn)個(gè)文件。
最簡(jiǎn)單的方法不用數(shù)據(jù)庫(kù),可以用一個(gè)PHP文件實(shí)現(xiàn),這個(gè)文件列出指定目錄下的所有文件,然后提供一個(gè)上傳的FORM,最后檢測(cè)是否提交了FORM數(shù)據(jù),是就保存文件到指定位置。
--------------------------------------------------------------------------------
文件上傳處理
POST 方法上傳
本特性可以使用戶上傳文本和二進(jìn)制文件。用 PHP 的認(rèn)證和文件操作函數(shù),可以完全控制允許哪些人上傳以及文件上傳后怎樣處理。
PHP 能夠接受任何來(lái)自符合 RFC-1867 標(biāo)準(zhǔn)的瀏覽器(包括 Netscape Navigator 3 及更高版本,打了補(bǔ)丁的 Microsoft Internet Explorer 3 或者更高版本)上傳的文件。
相關(guān)的設(shè)置: 請(qǐng)參閱 php.ini 的 file_uploads,upload_max_filesize,upload_tmp_dirpost_max_size 以及 max_input_time 設(shè)置選項(xiàng)。
請(qǐng)注意 PHP 也支持 PUT 方法的文件上傳,Netscape Composer 和 W3C 的 Amaya 客戶端使用這種方法。請(qǐng)參閱對(duì) PUT 方法的支持以獲取更多信息。
例 39.1. 文件上傳表單
可以如下建立一個(gè)特殊的表單來(lái)支持文件上傳:
!-- The data encoding type, enctype, MUST be specified as below --
form enctype="multipart/form-data" action="__URL__" method="POST"
!-- MAX_FILE_SIZE must precede the file input field --
input type="hidden" name="MAX_FILE_SIZE" value="30000" /
!-- Name of input element determines name in $_FILES array --
Send this file: input name="userfile" type="file" /
input type="submit" value="Send File" /
/form
以上范例中的 __URL__ 應(yīng)該被換掉,指向一個(gè)真實(shí)的 PHP 文件。
MAX_FILE_SIZE 隱藏字段(單位為字節(jié))必須放在文件輸入字段之前,其值為接收文件的最大尺寸。這是對(duì)瀏覽器的一個(gè)建議,PHP 也會(huì)檢查此項(xiàng)。在瀏覽器端可以簡(jiǎn)單繞過(guò)此設(shè)置,因此不要指望用此特性來(lái)阻擋大文件。實(shí)際上,PHP 設(shè)置中的上傳文件最大值是不會(huì)失效的。但是最好還是在表單中加上此項(xiàng)目,因?yàn)樗梢员苊庥脩粼诨〞r(shí)間等待上傳大文件之后才發(fā)現(xiàn)文件過(guò)大上傳失敗的麻煩。
注意: 要確保文件上傳表單的屬性是 enctype="multipart/form-data",否則文件上傳不了。
全局變量 $_FILES 自 PHP 4.1.0 起存在(在更早的版本中用 $HTTP_POST_FILES 替代)。此數(shù)組包含有所有上傳的文件信息。
以上范例中 $_FILES 數(shù)組的內(nèi)容如下所示。我們假設(shè)文件上傳字段的名稱如上例所示,為 userfile。名稱可隨意命名。
$_FILES['userfile']['name']
客戶端機(jī)器文件的原名稱。
$_FILES['userfile']['type']
文件的 MIME 類型,如果瀏覽器提供此信息的話。一個(gè)例子是“image/gif”。不過(guò)此 MIME 類型在 PHP 端并不檢查,因此不要想當(dāng)然認(rèn)為有這個(gè)值。
$_FILES['userfile']['size']
已上傳文件的大小,單位為字節(jié)。
$_FILES['userfile']['tmp_name']
文件被上傳后在服務(wù)端儲(chǔ)存的臨時(shí)文件名。
$_FILES['userfile']['error']
和該文件上傳相關(guān)的錯(cuò)誤代碼。此項(xiàng)目是在 PHP 4.2.0 版本中增加的。
文件被上傳后,默認(rèn)地會(huì)被儲(chǔ)存到服務(wù)端的默認(rèn)臨時(shí)目錄中,除非 php.ini 中的 upload_tmp_dir 設(shè)置為其它的路徑。服務(wù)端的默認(rèn)臨時(shí)目錄可以通過(guò)更改 PHP 運(yùn)行環(huán)境的環(huán)境變量 TMPDIR 來(lái)重新設(shè)置,但是在 PHP 腳本內(nèi)部通過(guò)運(yùn)行 putenv() 函數(shù)來(lái)設(shè)置是不起作用的。該環(huán)境變量也可以用來(lái)確認(rèn)其它的操作也是在上傳的文件上進(jìn)行的。
使文件上傳生效
請(qǐng)查閱函數(shù) is_uploaded_file() 和 move_uploaded_file() 以獲取進(jìn)一步的信息。以下范例處理由表單提供的文件上傳。
?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo 'pre';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "/pre";
?
接受上傳文件的 PHP 腳本為了決定接下來(lái)要對(duì)該文件進(jìn)行哪些操作,應(yīng)該實(shí)現(xiàn)任何邏輯上必要的檢查。例如可以用 $_FILES['userfile']['size'] 變量來(lái)排除過(guò)大或過(guò)小的文件,也可以通過(guò) $_FILES['userfile']['type'] 變量來(lái)排除文件類型和某種標(biāo)準(zhǔn)不相符合的文件,但只把這個(gè)當(dāng)作一系列檢查中的第一步,因?yàn)榇酥低耆煽蛻舳丝刂贫?PHP 端并不檢查。自 PHP 4.2.0 起,還可以通過(guò) $_FILES['userfile']['error'] 變量來(lái)根據(jù)不同的錯(cuò)誤代碼來(lái)計(jì)劃下一步如何處理。不管怎樣,要么將該文件從臨時(shí)目錄中刪除,要么將其移動(dòng)到其它的地方。
如果表單中沒(méi)有選擇上傳的文件,則 PHP 變量 $_FILES['userfile']['size'] 的值將為 0,$_FILES['userfile']['tmp_name'] 將為空。
如果該文件沒(méi)有被移動(dòng)到其它地方也沒(méi)有被改名,則該文件將在表單請(qǐng)求結(jié)束時(shí)被刪除。
上傳一組文件
PHP 的 HTML 數(shù)組特性甚至支持文件類型。
form action="" method="post" enctype="multipart/form-data"
pPictures:
input type="file" name="pictures[]" /
input type="file" name="pictures[]" /
input type="file" name="pictures[]" /
input type="submit" value="Send" /
/p
/form
?php
foreach ($_FILES["pictures"]["error"] as $key = $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "data/$name");
}
}
?
PHP?一般使用?POST?方法上傳文件,下面是一個(gè)簡(jiǎn)單的文件上傳示例,里面有相關(guān)的注釋:
up.htm?文件:
----------
html
head
meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"
titleUp?Sample/title
/head
body
form?action="up.php"?method="post"?enctype="multipart/form-data"
!--備注:表單中?enctype="multipart/form-data?"?的意思,是設(shè)置表單的?MIME?編碼。默認(rèn)情況,這個(gè)編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了?multipart/form-data?,才能完整的傳遞文件數(shù)據(jù),進(jìn)行下面的操作,并且?method?要設(shè)置為?"post"--
File:br?/
input?type="file"?name="upfile"?size="30"br?/
!--上傳框要設(shè)置?type="file"--
br?/
input?type="submit"?value="Upload"
/form
/body
/html
----------
up.php?文件
----------
?php
if?(is_uploaded_file($_FILES["upfile"]["tmp_name"])){
//如果有文件上傳
//is_uploaded_file?--?判斷文件是否是通過(guò)?HTTP?POST?上傳的,返回布爾值
//$_FILES['upfilename']['...'],其中的?'upfilename'?即為上傳框的?name?屬性
//$_FILES['upfile']['tmp_name']?--?文件被上傳后在服務(wù)端儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)
if(!eregi('pdf',?$_FILES['upfile']['type'])){
//我們這里假設(shè)你要上傳一個(gè)?pdf?文件
//if(!eregi('pdf',?$_FILES['upfile']['type']))?這個(gè)是判斷上傳文件類型的,是不是?pdf?文件,當(dāng)然,若是想判斷是否是?jpg?文件的話,將?pdf?改成?jpg?就可以了,即?if(!eregi('jpg',?$_FILES['upfile']['type']))
//$_FILES['upfile']['type']?是文件的?MIME?類型,如果瀏覽器提供此信息的話。例如“image/gif”
echo?'The?uploaded?file?is?not?an?pdf?File!?Please?upload?a?right?file!';
}else{
$filename?=?$_FILES['upfile']['name'];
//$filename?=?$_FILES['upfile']['name'],這里是指定上傳后的文件名,這里使用的仍是原來(lái)的文件名字,($_FILES['upfile']['name']?是原始文件的名字)
if(move_uploaded_file($_FILES["upfile"]["tmp_name"],?dirname(__FILE__)."/upload_file/".$filename)){
//這里就是上傳文件
//dirname(__FILE__)."/upload_file/".$file_name?--?指定上傳的目標(biāo)文件,假設(shè)你要上傳的目標(biāo)文件夾upload_file?是和當(dāng)前文件(upload.php)在同一文件夾下
//chmod(dirname(__FILE__)."/upload_file/".?$file_name,?0444);
//上面注釋掉的是用來(lái)改變上傳后文件的屬性,444?即只有執(zhí)行和讀的權(quán)限(看情況加上)
echo?$_FILES["upfile"]["name"]?.?"?uploaded?succeed!!!";
}else{
echo?"Can't?upload!!!";
}
}
}else{
echo?"File?is?not?selected";
}
//需要注意的:
/*
在你的?up.php?同級(jí)目錄下建立?upload_file?文件夾,來(lái)存放上傳的文件
在上傳之前要看一下?php?的配置文件:php.ini?中的三處設(shè)置
1.是否允許文件上傳:(?file_uploads?=?On?)
2.文件上傳的最大?size:(?upload_max_filesize?)
3.post?的最大?size?(?post_max_size?)?這個(gè)大小設(shè)置成和?uplod_max_filesize?一樣大或比?uplod_max_filesize?大
*/
/*
這只是很簡(jiǎn)單的一個(gè)文件上傳的例子,為了幫助理解,只是判斷了一下上傳文件的類型,還可以使用?if?語(yǔ)句來(lái)判斷上傳文件的大小($_FILES['upfile']['type'])),并進(jìn)行提示控制等,相關(guān)可以查閱?$_FILE['upfile']?數(shù)組的各個(gè)值分別代表什么
*/
?
----------
可以看看?php100?里面的視頻,其中一節(jié)就是介紹文件上傳的.??:)
用navicat或者phpmyadmin等工具導(dǎo)出sql
在線上數(shù)據(jù)庫(kù)建立一個(gè)新的數(shù)據(jù)庫(kù),然后用上述工具倒入即可
修改網(wǎng)站代碼中的數(shù)據(jù)庫(kù)配置文件,將新的數(shù)據(jù)庫(kù)ip、用戶名和密碼寫入
你可以使用FTP,把數(shù)據(jù)庫(kù)和文件壓縮上傳到網(wǎng)上去。你給出的圖片那不是數(shù)據(jù)庫(kù)文件,你要把數(shù)據(jù)庫(kù)導(dǎo)出來(lái),只有一個(gè)sql后綴的數(shù)據(jù)庫(kù)文件。也可以在虛擬空間的phpadmin管理界面導(dǎo)入數(shù)據(jù)庫(kù)文件,希望能幫到你。