php上傳文件的原理
所謂上傳就是把文件從你電腦本地復制到你的項目指定文件夾下。
但這有個中間過程,就是復制到系統指定的臨時文件夾生成臨時文件。
然後將臨時文件復制到你指定的文件夾下。
剩下的就是各種驗證了。
給你個圖片上傳方法
//上傳一張圖片
$pic = $_FILES['pic'];
function upload($pic){
$tmp_name = $pic['tmp_name'];
$name = $pic['name'];
$type = $pic['type'];
$size = $pic['size'];
if(!is_uploaded_file($tmp_name)) exit('不是上傳文件');
//判斷是否是圖片
$mine = array('image/png','image/jpg','image/gif','image/jpeg');
if(!in_array($type,$mine)) exit('圖片格式不正確');
//判斷是否有錯誤碼
$error = $pic['error'];
switch ($error) {
case 1:
exit("超出上傳文件的最大限制");
case 2:
exit("超出了指定的文件大小");
case 3:
exit("只有部分文件被上傳");
case 4:
exit("文件沒有被上傳");
case 6:
exit("找不到臨時文件夾");
case 7:
exit("文件寫入失敗");
}
echo "================<br/>";
echo "上傳文件名稱是:".$name."<br/>";
echo "上傳文件類型是:".$type."<br/>";
echo "上傳文件大小是:".$size."<br/>";
echo "上傳後系統返回的值是:".$error."<br/>";
echo "上傳文件的臨時存放路徑是:".$tmp_name."<br/>";
echo"開始移動臨時文件".'<br>';
$des_name = 'up/'.mt_rand().time().'.'.basename($type);
$res = move_uploaded_file($tmp_name, $des_name);
if($res){
echo "================<br/>";
echo "上傳圖片成功".'<br>';
}
}
『貳』 php如何實現文件上傳啊
PHP一般使用POST方法上傳文件,下面是一個簡單的文件上傳示例,裡面有相關的注釋:
up.htm文件:
----------
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>UpSample</title>
</head>
<body>
<formaction="up.php"method="post"enctype="multipart/form-data">
<!--備注:表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操作,並且method要設置為"post"-->
File:<br/>
<inputtype="file"name="upfile"size="30"><br/>
<!--上傳框要設置type="file"-->
<br/>
<inputtype="submit"value="Upload">
</form>
</body>
</html>
----------
up.php文件
----------
<?php
if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){
//如果有文件上傳
//is_uploaded_file--判斷文件是否是通過HTTPPOST上傳的,返回布爾值
//$_FILES['upfilename']['...'],其中的'upfilename'即為上傳框的name屬性
//$_FILES['upfile']['tmp_name']--文件被上傳後在服務端儲存的臨時文件名,一般是系統默認
if(!eregi('pdf',$_FILES['upfile']['type'])){
//我們這里假設你要上傳一個pdf文件
//if(!eregi('pdf',$_FILES['upfile']['type']))這個是判斷上傳文件類型的,是不是pdf文件,當然,若是想判斷是否是jpg文件的話,將pdf改成jpg就可以了,即if(!eregi('jpg',$_FILES['upfile']['type']))
//$_FILES['upfile']['type']是文件的MIME類型,如果瀏覽器提供此信息的話。例如「image/gif」
echo'TheuploadedfileisnotanpdfFile!Pleaseuploadarightfile!';
}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--指定上傳的目標文件,假設你要上傳的目標文件夾upload_file是和當前文件(upload.php)在同一文件夾下
//chmod(dirname(__FILE__)."/upload_file/".$file_name,0444);
//上面注釋掉的是用來改變上傳後文件的屬性,444即只有執行和讀的許可權(看情況加上)
echo$_FILES["upfile"]["name"]."uploadedsucceed!!!";
}else{
echo"Can'tupload!!!";
}
}
}else{
echo"Fileisnotselected";
}
//需要注意的:
/*
在你的up.php同級目錄下建立upload_file文件夾,來存放上傳的文件
在上傳之前要看一下php的配置文件:php.ini中的三處設置
1.是否允許文件上傳:(file_uploads=On)
2.文件上傳的最大size:(upload_max_filesize)
3.post的最大size(post_max_size)這個大小設置成和uplod_max_filesize一樣大或比uplod_max_filesize大
*/
/*
這只是很簡單的一個文件上傳的例子,為了幫助理解,只是判斷了一下上傳文件的類型,還可以使用if語句來判斷上傳文件的大小($_FILES['upfile']['type'])),並進行提示控制等,相關可以查閱$_FILE['upfile']數組的各個值分別代表什麼
*/
?>
----------
可以看看php100裡面的視頻,其中一節就是介紹文件上傳的.:)
『叄』 php如何實現上傳圖片文件,並替換
首先建立兩個文件: change.html 和 change.php
change.html 文件的表單代碼如下:
<html>
<head>
<title>change file example.</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="changefile.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<tr>
<td width=55 height=20 align="center">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
文件:
</td>
<td>
<input name="file" type="file" />
<input type="submit" name="submit" value="submit" />
</td>
</tr>
</table>
</form>
</body>
</html>
這里有幾個要注意的地方,首先看這句<form method="post" action="change.php" enctype="multipart/form-data">,這里我們採用POST方法,個別瀏覽器還支持PUT方法,當然這需要對腳本進行修改,我並不建議這么做。表單中必須設置enctype="multipart/form-data,這樣,伺服器就知道上傳文件帶有常規表單信息,記住,這個是必須設置的。此外還需要一個隱藏域來限制上傳文件的最大長度:<input type="hidden" name="MAX_FILE_SIZE" value="2000000">,這里name必須設置成MAX_FILE_SIZE,其值就是上傳文件的最大長度,單位是B,這里我限製成2M。再看這句:<input name="file" type="file" value="瀏覽" >,type="file"說明了文件類型,這樣一個基本的上傳文件介面就完成了,接下來講講如何用PHP來處理上傳的文件,此外你的php.ini中設置的上傳文件最大長度可能會影響到你的實際上傳,請根據實際情況修改,另PHP的上傳是先傳到臨時目錄,在移至指定目錄的,了;臨時目錄的可根據需要修改,也可使用默認值……
以下為表單提交change.php文件代碼,來看看這個文件都有什麼:
<?php
header("content-type:text/html;charset=utf-8");
/**
* @param string $oldfile 需要更換的文件名(包含具體路徑名)
*/
function changeFile($oldfile){
$newfile = $_FILES['file']['name'];//獲取上傳文件名
$fileclass = substr(strrchr($newfile, '.'), 1);//獲取上傳文件擴展名,做判斷用
$type = array("jpg", "gif", "bmp", "jpeg", "png");//設置允許上傳文件的類型
if(in_array(strtolower($fileclass), $type)){
if(file_exists($oldfile)){
unlink($oldfile);
}
if(is_uploaded_file($_FILES['file']['tmp_name'])){//必須通過 PHP 的 HTTP POST 上傳機制所上傳的
if(move_uploaded_file($_FILES['file']['tmp_name'], $oldfile)){
//輸出圖片預覽
echo "<center>您的文件已經上傳完畢 上傳圖片預覽: </center><br><center><img src='$oldfile'></center>";
}
}else{
echo "<center>上傳失敗,文件大於2M,請重新上傳!</center>";
}
}else{
$text = implode(",", $type);
echo "<center>您只能上傳以下類型文件:", $text, "</center><br>";
// echo "<script>alert('您只能上傳以下類型文件:$text')</script>";
}
}
changeFile("./files/1.png");
剛看這些你可能有點暈~~,慢慢看,你就會發現其實這玩意SO EASY!!先講下原理,該程序以上傳圖片為例,先判斷文件類型是否為圖片格式,若是則上傳文件,接著上傳文件到並替換指定文件,成功上傳則輸出上傳的圖片預覽。這里要對程序中一些函數作些解釋。先看substr(strrchr($newfile, '.'), 1), strrchar()函數有什麼作用呢,我舉個例子大家就知道,比如一個圖片文件 pic.jpg,我們用 strrchar()處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函數返回指定字元在該字元串最後出現的位置後的字元串。配合 substr() 我們就可以取到jpg,這樣我們就得到了文件的後綴名,來判斷上傳文件是否符合指定格式。本程序把指定的格式放在一個數組中,實際使用時可根據需要添加。
接著,我們調用判斷文件類型的函數,並將其轉化為小寫strtolower($_FILES['file']['name']),這里有個很關鍵的東東$_FILES ,這是個超級全局數組,保存了需要處理的表單數據,如果開啟了register_globals,也可以直接訪問,但這是不安全的。看剛才那個上傳介面<input name="file" type="file">,根據這個表單名稱,我們可以得到很多信息:
$_FILES['file']['name']-- 得到文件名稱
$_FILES['file']['tmp_name']--得到臨時存儲位置
$_FILES['file']['size']--得到文件大小
$_FILES['file']['type']--得到文件MIME類型
得到這些信息,就可以輕松判斷文件的信息了,是不是很方便?^_^,接下來還有一些函數需要了解,file_exists()--判斷指定目錄是否存在,不存在我們當然不能上傳(好像是廢話!),is_uploaded_file--判斷文件是否已經通過HTTP POST上傳,move_uploaded_file--將上傳文件移至指定目錄。成功上傳,我們就輸出預覽,否則輸出上傳失敗……
『肆』 Php上傳文件原理是什麼
二進制上傳,再詳細點就如同優盤裡面的東西上傳到你的電腦,上傳就是把本地電腦的臨時文件移動到伺服器制定目錄
『伍』 php中的文件上傳處理
PHP上傳文件非常簡單,你需要一個上傳的HTML文件(<FORM>),一個保存文件的PHP文件(保存),一個查詢上傳文件清單的工具。
真正實現完整功能的上傳和管理需要使用資料庫,我的網站俱樂部裡面上傳文件一開放很快就傳了幾萬個文件。
最簡單的方法不用資料庫,可以用一個PHP文件實現,這個文件列出指定目錄下的所有文件,然後提供一個上傳的FORM,最後檢測是否提交了FORM數據,是就保存文件到指定位置。
PHP手冊第39章有關於處理這些問題的說明,我復制粘貼如下:
上一頁V.特點下一頁
--------------------------------------------------------------------------------
第39章文件上傳處理
目錄
POST方法上傳
錯誤信息說明
常見缺陷
上傳多個文件
對PUT方法的支持
POST方法上傳
本特性可以使用戶上傳文本和二進制文件。用PHP的認證和文件操作函數,可以完全控制允許哪些人上傳以及文件上傳後怎樣處理。
PHP能夠接受任何來自符合RFC-1867標準的瀏覽器(包括NetscapeNavigator3及更高版本,打了補丁的MicrosoftInternetExplorer3或者更高版本)上傳的文件。
相關的設置:請參閱php.ini的file_uploads,upload_max_filesize,upload_tmp_dirpost_max_size以及max_input_time設置選項。
請注意PHP也支持PUT方法的文件上傳,NetscapeComposer和W3C的Amaya客戶端使用這種方法。請參閱對PUT方法的支持以獲取更多信息。
例39.1.文件上傳表單
可以如下建立一個特殊的表單來支持文件上傳:<!--Thedataencodingtype,enctype,MUSTbespecifiedasbelow-->
<formenctype="multipart/form-data"action="__URL__"method="POST">
<!--MAX_FILE_-->
<inputtype="hidden"name="MAX_FILE_SIZE"value="30000"/>
<!--$_FILESarray-->
Sendthisfile:<inputname="userfile"type="file"/>
<inputtype="submit"value="SendFile"/>
</form>
以上範例中的__URL__應該被換掉,指向一個真實的PHP文件。
MAX_FILE_SIZE隱藏欄位(單位為位元組)必須放在文件輸入欄位之前,其值為接收文件的最大尺寸。這是對瀏覽器的一個建議,PHP也會檢查此項。在瀏覽器端可以簡單繞過此設置,因此不要指望用此特性來阻擋大文件。實際上,PHP設置中的上傳文件最大值是不會失效的。但是最好還是在表單中加上此項目,因為它可以避免用戶在花時間等待上傳大文件之後才發現文件過大上傳失敗的麻煩。
注意:要確保文件上傳表單的屬性是enctype="multipart/form-data",否則文件上傳不了。
全局變數$_FILES自PHP4.1.0起存在(在更早的版本中用$HTTP_POST_FILES替代)。此數組包含有所有上傳的文件信息。
以上範例中$_FILES數組的內容如下所示。我們假設文件上傳欄位的名稱如上例所示,為userfile。名稱可隨意命名。
$_FILES['userfile']['name']
客戶端機器文件的原名稱。
$_FILES['userfile']['type']
文件的MIME類型,如果瀏覽器提供此信息的話。一個例子是「image/gif」。不過此MIME類型在PHP端並不檢查,因此不要想當然認為有這個值。
$_FILES['userfile']['size']
已上傳文件的大小,單位為位元組。
$_FILES['userfile']['tmp_name']
文件被上傳後在服務端儲存的臨時文件名。
$_FILES['userfile']['error']
和該文件上傳相關的錯誤代碼。此項目是在PHP4.2.0版本中增加的。
文件被上傳後,默認地會被儲存到服務端的默認臨時目錄中,除非php.ini中的upload_tmp_dir設置為其它的路徑。服務端的默認臨時目錄可以通過更改PHP運行環境的環境變數TMPDIR來重新設置,但是在PHP腳本內部通過運行putenv()函數來設置是不起作用的。該環境變數也可以用來確認其它的操作也是在上傳的文件上進行的。
例39.2.使文件上傳生效
請查閱函數is_uploaded_file()和move_uploaded_file()以獲取進一步的信息。以下範例處理由表單提供的文件上傳。
<?php
//InPHPversionsearlierthan4.1.0,$HTTP_POST_FILESshouldbeusedinstead
//of$_FILES.
$uploaddir='/var/www/uploads/';
$uploadfile=$uploaddir.basename($_FILES['userfile']['name']);
echo'<pre>';
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)){
echo"Fileisvalid,andwassuccessfullyuploaded.\n";
}else{
echo"Possiblefileuploadattack!\n";
}
echo'Hereissomemoredebugginginfo:';
print_r($_FILES);
print"</pre>";
?>
接受上傳文件的PHP腳本為了決定接下來要對該文件進行哪些操作,應該實現任何邏輯上必要的檢查。例如可以用$_FILES['userfile']['size']變數來排除過大或過小的文件,也可以通過$_FILES['userfile']['type']變數來排除文件類型和某種標准不相符合的文件,但只把這個當作一系列檢查中的第一步,因為此值完全由客戶端控制而在PHP端並不檢查。自PHP4.2.0起,還可以通過$_FILES['userfile']['error']變數來根據不同的錯誤代碼來計劃下一步如何處理。不管怎樣,要麼將該文件從臨時目錄中刪除,要麼將其移動到其它的地方。
如果表單中沒有選擇上傳的文件,則PHP變數$_FILES['userfile']['size']的值將為0,$_FILES['userfile']['tmp_name']將為空。
如果該文件沒有被移動到其它地方也沒有被改名,則該文件將在表單請求結束時被刪除。
例39.3.上傳一組文件
PHP的HTML數組特性甚至支持文件類型。
<formaction=""method="post"enctype="multipart/form-data">
<p>Pictures:
<inputtype="file"name="pictures[]"/>
<inputtype="file"name="pictures[]"/>
<inputtype="file"name="pictures[]"/>
<inputtype="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");
}
}
?>
--------------------------------------------------------------------------------
上一頁上一級下一頁
38.處理XForms起始頁錯誤信息說明
『陸』 php上傳下載系統怎麼實現
隨便下個開源的上傳文件程序 看看代碼即可
核心函數 COPY
PHP文件上傳的原理及實現
利用php的文件函數來實現上傳
這段代碼分為兩個文件,一個為upload.html,一個是upload.php
upload.html
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">
<input type="submit" value="上傳文件">
</form>
其中,請注意
值得注意的是文件upload.html中表單選項 MAX_FILE_SIZE 的隱藏值域,通過設置其Value(值)可以限制上載文件的大小。
MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望於該值。實際上,PHP 設置中的上傳文件最大值,是不會失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因為它可以避免用戶在花時間等待上傳大文件之後才發現該文件太大了的麻煩。
upload.php
$f=&$HTTP_POST_FILES['Myfile'];
$dest_dir='uploads';//設定上傳目錄
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//設置文件名為日期加上文件名避免重復
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//設定上傳的文件的屬性
或者
<?($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>
然後再COPY的同時連下資料庫把要入的值入庫即可
再做一個查詢頁面讀取資料庫
『柒』 php 為什麼上傳文件
1.表單部分
允許用戶上傳文件,在HTML表單的聲明中要加上一個上傳的屬性:
enctype = 'multipart/form-data'
表單的method必須是POST
表單選項MAX_FILE_SIZE隱藏域用於限制上傳文件大小,它必須放在文件表單元素前面,單位為位元組。
如:
復制代碼代碼如下:
<form enctype='multipart/form-data' id='aa' name='aaa' method='post' action='xxx.php'>
<input type='hidden' name='MAX_FILE_SIZE' value='2621114' />
<input name='upload_file' type='file' />
</form>
2.處理上傳文件
上傳時,PHP收到關於該文件的信息數組,這些信息可以在$_FILES這個超級全局數組中找到。
如:如果表單中的文件輸入框名字為upload_file,那麼關於該文件的所有信息都包含在數組$_FILES['upload_file']裡面。
如:客戶上傳了一個「aaa.jpg」的圖片數組值如下:
name "p5pp.jpg" 上傳時文件的名字
type 「image/jpeg" 文件類型
tmp_name "/tmp/phpjksdf" 伺服器端的臨時文件名
error 上傳錯誤的返回值
size 2045 文件實際大小
上面數組裡面的error會返回不同的常量值,如下:
UPLOAD_ERR_OK 沒有錯誤發生,文件上傳成功
UPLOAD_ERR_INI_SIZE 文件大小超過了PHP.INI中upload_max_filesize選項限制的值
UPLOAD_ERR_FORM_SIZE 上傳文件的大小超過了HTML表單中MAX_FILE_SIZE選項值。可在程序中檢查表單$FILES ['up_file']['size']來處理
UPLOAD_ERR_PARTIAL 文件只有部分被上傳
UPLOAD_ERR_NO_FILE 用戶沒有提供任何文件上傳
上傳後處理的具體例子:
復制代碼代碼如下:
if(!move_uploaded_file($_FILES['f']['tmp_name'],"uploads/".$_FILES['f']['name'].".jpg")){
echo "error";
}
函數:
move_uploaded_file 移動上傳的臨時文件到指定的目錄下
例子:
move_uploaded_file('臨時文件名','指定文件路徑')
is_uploaded_file 判斷是否是通過http Post上傳的文件
例子:
復制代碼代碼如下:
if(!is_uploaded_file($_FILES['f']['tmp_name'])){
echo '非法';
}
3.相關參數
PHP上傳設計到的php.ini中的參數:
file_uploads 是否允許上傳文件,默認ON
upload_tmp_dir 上傳文件防止的臨時目錄,未指定則使用系統默認位置
upload_max_filesize 允許上傳文件的大小的最大值,默認為2M
post_max_size 控制採用POST方法進行一次表單提交中PHP所能接受的最大數據量,如果希望用PHP文件上傳,則此值要改為比upload_max_filesize要大
max_input_time 以秒為單位對通過POST/GET/PUT方式接受數據時間進行限制。
memory_limit 為了避免正在運行的腳本大量使用系統內存,PHP允許定義內存使用限額。通過設置此參數來制定單個腳本程序可以使用的最大內存容量,應適當大於post_max_size值
max_execution_time 用來設置在強制終止腳本前PHP等待腳本執行完畢的時間,單位秒。次選項可限制死循環腳本,但當存在一個長時間的合法活動時(如:上傳大文件),這項功能也會導致操作失敗。這樣情況下必須考慮將此變數增加。
4.考慮多文件上傳
可以利用$_FILES數組就可以輕松實現多文件上傳。$_FILES數組可以獲取客戶端表單裡面所有的file域內容,從而獲得所有在同一表單上傳的文件。
5.突破上傳的內存限制
方法一:
修改php.ini中memory_limit值,改為更大,如 64M
方法二:
使用Apache Rewrite方法,動態修改memory_limit的值。首先建立一個.htaccess文件,保存在上傳文件程序的 當前目錄即可.代碼如下:
php_value memory_limit 100M
php_value post_max_size 30M
php_value upload_max_filesize 30M
php_value max_execution_time 300
php_value max_input_tim 300
php_value display_errors On
『捌』 php上傳文件為什麼要使用move
php上傳文件的原理是:先將文件存儲到緩存目錄,是個tmpw格式的文件,然後需要移動到你的文件存儲目錄,為防止重名問題,一般都會重寫一個文件名。
『玖』 關於php實現文件上傳
php的文件上傳機制是把用戶上傳的文件保存在php.ini的upload_tmp_dir定義的臨時目錄(默認是系統的臨時目錄,如:/tmp)里的一個類似phpxXuoXG的隨機臨時文件,程序執行結束,該臨時文件也被刪除。PHP給上傳的文件定義了四個變數:(如form變數名是file,而且register_globals打開)
$file #就是保存到伺服器端的臨時文件(如/tmp/phpxXuoXG )
$file_size #上傳文件的大小
$file_name #上傳文件的原始名稱
$file_type #上傳文件的類型
推薦使用:
$_FILES['file']['tmp_name']
$_FILES['file']['size']
$_FILES['file']['name']
$_FILES['file']['type']
『拾』 用php上傳圖片怎麼做
上傳圖片原理:首先判斷文件類型是否為圖片格式,若是則上傳文件,然後重命名文件(一般都是避免上傳文件重名,現在基本上都是以為時間來命名),接著把文件上傳到指定目錄,成功上傳後輸出上傳圖片的預覽。
1.首先我們開始判斷文件類型是否為圖片類型用到的函數
{
strrchr:查找字元串在另一個字元串中最後一次出現的位置,並返回從該位置到字元串結尾的所有字元。
substr: 取部份字元串。
$HTTP_POST_FILES['file']['name']:獲取當前上傳的文件全稱。
}
圖片類型就是「.」後面的字元(比如:一個文件名稱為XXX.JPG 那麼它的類型就是「.」後面的JPG)。 我們可以用PHP中的函數來截取上傳者文件名字的。我們來寫個獲取文件類型的函數
<?
function type()
{
return substr(strrchr($HTTP_POST_FILES['file']['name'],'.'),1);
}
?>
2.若是則上傳文件,然後重命名文件用到的函數
{ strtolower:把字元串的字母全部轉換為小寫字母. in_array: 函數在數組中搜索給定的值。 implode:函數把數組元素組合為一個字元串 random:隨機生成的數 $_FILES['userfile']['name']:上傳文件名稱 $uploaddir:自己定義的變數。比如在同一個文件夾裡面,你想把上傳的文件放到這個文件夾的FILE文件夾下,你可以這樣定義$uploaddir="./file/";注意寫法 } 這邊會出現很多問題,第一先寫一個能上傳類型的數組。第二判斷文件合法性。第三給文件重名。*(這邊判斷文件大小就不寫了)先定義允許上傳文件的類型數組:$type=array("jpg","gif","bmp","jpeg","png");第二用一個IF。。else。。寫一個判斷文件合法性的控制流語句。if(!in_arry(strtolower(type()),$type))//如果不存在能上傳的類型 { $text=implode('.',$type); echo "您只能上傳以下類型文件: ",$text,"<br>"; } 下面就是給他們重新命名了,else { $filename=explode(".",$_FILES['userfile']['name']);//把上傳的文件名以「.」好為准做一個數組。 $time=date("m-d-H-i-s");//去當前上傳的時間 $filename[0]=$time;//取文件名t替換 name=implode(".",$filename); //上傳後的文件名 $uploadfile=$uploaddir.$name;//上傳後的文件名地址 } 3.最後把文件上傳到指定目錄,成功上傳後輸出上傳圖片的預覽用到的函數{ move_uploaded_file:執行上傳文件 } if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) { echo "<center>您的文件已經上傳完畢 上傳圖片預覽: </center><br><center><img src='$uploadfile'></center>"; echo"<br><center><a href='javascrīpt:history.go(-1)'>繼續上傳</a></center>"; } else { echo"傳輸失敗!"; }