先創(chuàng)建一個(gè)php頁面,例如叫doup.php,在其中穿件一個(gè)form:
公司專注于為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號開發(fā)、購物商城網(wǎng)站建設(shè),微信平臺小程序開發(fā),軟件按需網(wǎng)站設(shè)計(jì)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
form enctype="multipart/form-data" action="doup.php" method="POST"
lable
input name="sdd" type="text" /
input name="sdd" type="submit" value="提交"/
/lable
/form
?php
$conn=mysql_connect("localhost","root","123")or die("連接錯(cuò)誤".mysql_error());
mysql_select_db("數(shù)據(jù)庫名",$conn);
$myvalue=$_post["sdd"];
$sql="insert into dfgghy(myvalue) value('$myvalue')";
$re=mysql_querry($sql);
?
創(chuàng)建一個(gè)文件上傳表單
允許用戶從表單上傳文件是非常有用的。
請看下面這個(gè)供上傳文件的 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
請留意如下有關(guān)此表單的信息:
form 標(biāo)簽的 enctype 屬性規(guī)定了在提交表單時(shí)要使用哪種內(nèi)容類型。在表單需要二進(jìn)制數(shù)據(jù)時(shí),比如文件內(nèi)容,請使用 "multipart/form-data"。
input 標(biāo)簽的 type="file" 屬性規(guī)定了應(yīng)該把輸入作為文件來處理。舉例來說,當(dāng)在瀏覽器中預(yù)覽時(shí),會看到輸入框旁邊有一個(gè)瀏覽按鈕。
注釋:允許用戶上傳文件是一個(gè)巨大的安全風(fēng)險(xiǎn)。請僅僅允許可信的用戶執(zhí)行文件上傳操作。
創(chuàng)建上傳腳本
"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 的全局?jǐn)?shù)組 $_FILES,你可以從客戶計(jì)算機(jī)向遠(yuǎn)程服務(wù)器上傳文件。
第一個(gè)參數(shù)是表單的 input name,第二個(gè)下標(biāo)可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:
$_FILES["file"]["name"] - 被上傳文件的名稱
$_FILES["file"]["type"] - 被上傳文件的類型
$_FILES["file"]["size"] - 被上傳文件的大小,以字節(jié)計(jì)
$_FILES["file"]["tmp_name"] - 存儲在服務(wù)器的文件的臨時(shí)副本的名稱
$_FILES["file"]["error"] - 由文件上傳導(dǎo)致的錯(cuò)誤代碼
這是一種非常簡單文件上傳方式?;诎踩矫娴目紤],您應(yīng)當(dāng)增加有關(guān)什么用戶有權(quán)上傳文件的限制。
上傳限制
在這個(gè)腳本中,我們增加了對文件上傳的限制。用戶只能上傳 .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。
保存被上傳的文件
上面的例子在服務(wù)器的 PHP 臨時(shí)文件夾創(chuàng)建了一個(gè)被上傳文件的臨時(shí)副本。
這個(gè)臨時(shí)的復(fù)制文件會在腳本結(jié)束時(shí)消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:
?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";
}
?
上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。
注釋:這個(gè)例子把文件保存到了名為 "upload" 的新文件夾。
define(UPLOAD_ROOT,'你的上傳文件夾路徑');
function fake_random_name($string,$key){
#偽代碼 隨便根據(jù)用戶名和上傳時(shí)間生成一個(gè)偽隨機(jī)的文件名作為上傳以后的用戶名
#但解碼的條件是可以根據(jù)文件名判斷出文件所有者的用戶名和上傳時(shí)間
#需要從數(shù)據(jù)庫取出用戶的密匙 才能進(jìn)行解密 密匙是用戶名的前5個(gè)字符
#具體加密解密的代碼實(shí)現(xiàn) 請參照PHP標(biāo)準(zhǔn)擴(kuò)展庫 Mcrypt擴(kuò)展下的N種方法
return $fake_random_name;
}
if(!is_writbale(UPLOAD_ROOT)){
die('you need chown the dir for your uploading file,make it writable~');
}else{
move_uploaded_file($_FILES['POST過來的表單名']['tmp_name'];
/*
* 這個(gè)方法會自動調(diào)用is_upload_file()方法 檢測是否是合法的http rfc1867協(xié)議上傳的文件
* 當(dāng)然了 你也可以限制是否是你需要的合法文件類型 $_FILE[$_POST[name]][type] 比如是否是pdf img文件 都可以
*/
$dbh = new mysqli('localhost','root','sa','your_db_name');#生成中可以include進(jìn)來 DSN放到根目錄以外去 保護(hù)連接文件
$sec_key = substr($_SESSION['loginname'],0,5);
#密匙
$file_name = fake_random_name($_FILES['POST過來的表單名']['tmp_name'],$sec_key);
#加密后的名字
$q_str = "insert into tb(owner,location)values($_SEESION['loginname'],UPLOAD_ROOT.DIRECTORYSLASH.$file_name))";/SQL
$dbh-query($q_str);
if($dbh-num_rows()==1) echo "上傳成功,已經(jīng)插入數(shù)據(jù)庫文件細(xì)節(jié)(加密)";
}
$time=date(‘y-m-d h-i-s’,time());
$time就是系統(tǒng)時(shí)間了,精確到秒了,然后你把它存進(jìn)數(shù)據(jù)庫就行了
使用php的cli程序,如果是widows使用定時(shí)任務(wù),如果是linux使用crontab,指定時(shí)間執(zhí)行上傳代碼
PHP?一般使用?POST?方法上傳文件,下面是一個(gè)簡單的文件上傳示例,里面有相關(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?--?判斷文件是否是通過?HTTP?POST?上傳的,返回布爾值
//$_FILES['upfilename']['...'],其中的?'upfilename'?即為上傳框的?name?屬性
//$_FILES['upfile']['tmp_name']?--?文件被上傳后在服務(wù)端儲存的臨時(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'],這里是指定上傳后的文件名,這里使用的仍是原來的文件名字,($_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);
//上面注釋掉的是用來改變上傳后文件的屬性,444?即只有執(zhí)行和讀的權(quán)限(看情況加上)
echo?$_FILES["upfile"]["name"]?.?"?uploaded?succeed!!!";
}else{
echo?"Can't?upload!!!";
}
}
}else{
echo?"File?is?not?selected";
}
//需要注意的:
/*
在你的?up.php?同級目錄下建立?upload_file?文件夾,來存放上傳的文件
在上傳之前要看一下?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?大
*/
/*
這只是很簡單的一個(gè)文件上傳的例子,為了幫助理解,只是判斷了一下上傳文件的類型,還可以使用?if?語句來判斷上傳文件的大?。?_FILES['upfile']['type'])),并進(jìn)行提示控制等,相關(guān)可以查閱?$_FILE['upfile']?數(shù)組的各個(gè)值分別代表什么
*/
?
----------
可以看看?php100?里面的視頻,其中一節(jié)就是介紹文件上傳的.??:)
本文題目:php數(shù)據(jù)實(shí)現(xiàn)定時(shí)上傳 php如何實(shí)現(xiàn)文件上傳
轉(zhuǎn)載源于:http://chinadenli.net/article38/dodcdpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、面包屑導(dǎo)航、動態(tài)網(wǎng)站、虛擬主機(jī)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)