當前位置:ag真人国际官网-ag旗舰厅官方网站 » 文件管理 » php上傳文件

php上傳文件-ag真人国际官网

發布時間: 2022-01-08 01:33:30

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 "================
";
echo "上傳文件名稱是:".$name."
";
echo "上傳文件類型是:".$type."
";
echo "上傳文件大小是:".$size."
";
echo "上傳後系統返回的值是:".$error."
";
echo "上傳文件的臨時存放路徑是:".$tmp_name."
";
echo"開始移動臨時文件".'
';
$des_name = 'up/'.mt_rand().time().'.'.basename($type);
$res = move_uploaded_file($tmp_name, $des_name);
if($res){
echo "================
";
echo "上傳圖片成功".'
';
}
}

❷ php中的文件上傳處理

php上傳文件非常簡單,你需要一個上傳的html文件(

),一個保存文件的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.文件上傳表單

可以如下建立一個特殊的表單來支持文件上傳:




sendthisfile:




以上範例中的__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()以獲取進一步的信息。以下範例處理由表單提供的文件上傳。

//inphpversionsearlierthan4.1.0,$http_post_filesshouldbeusedinstead
//of$_files.

$uploaddir='/var/www/uploads/';
$uploadfile=$uploaddir.basename($_files['userfile']['name']);

echo'
';
if(move_uploaded_file($_files['userfile']['tmp_name'],$uploadfile)){
echo"fileisvalid,andwassuccessfullyuploaded.\n";
}else{
echo"possiblefileuploadattack!\n";
}

echo'hereissomemoredebugginginfo:';
print_r($_files);

print"
";

?>

接受上傳文件的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數組特性甚至支持文件類型。


pictures:








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中上傳文件的方法有多少種

一、傳統的php寫的上傳類。
寫一個php的上傳類,這個方法用到的知識全部是php的,而且技術的難點也不多。



//隱藏域。這里name必須設置成max_file_size,其值就是上傳文件的最大長度,單位是b,這里我限製成2m

< input type="submit" value="上傳" name="b1">



服務端利用php的$_files['file']['name']來獲取文件後綴名,具體的代碼自己查找資料看看,這里就不多說了。
總結;這個方法可以用來上傳小於2m的文件或者是圖片,基本的功能可以實現。
二、利用uploadify插件
這個是利用jquery的上傳插件,上傳可以帶進度條,容易配置。
總結:可以上傳一些大文件,和圖片,而且帶進度條,可以多文件上傳,在web中會經常用。
三、利用網路的webupload
webuploader 是由 bai fex 團隊開發的一款以 html5 為主,flash 為輔的現代文件上傳組件。在現代的瀏覽器裡面能充分發揮 html5 的優勢,同時又不摒棄主流ie瀏覽器,沿用原來的 flash 運行時,兼容 ie6 ,ios 6 , android 4 。採用大文件分片並發上傳,極大的提高了文件上傳效率。
四、swfupload的插件

這是一個jquery的上傳插件,功能也非常強大,開發也比較容易,網上有很多的資料,可以自行查找。

❹ php如何上傳文件

$f_type=strtolower("swf,rar,jpg,zip,7z,iso,gif,exe,rmvb");//設置可上傳的文件類型

if (!is_uploaded_file($file) || ($_files['photoupload']['size'] > 20000 * 1024 * 1024) )
{
$error = 'please upload only files smaller than 2mb!';
}
$f_name=$_files['photoupload']['name'];
$tmp_type=substr(strrchr($f_name,"."),1);//獲取文件擴展名
$tmp_type=strtolower($tmp_type);
if(!stristr($f_type,$tmp_type)){
$error="對不起,不能上傳格式為:".$tmp_type."的文件:".$f_name;

}
if(move_uploaded_file($_files['photoupload']['tmp_name'], $uploadfile)){
$result['result'] = 'success';
$result['size'] =$f_name."文件上傳成功";
}
else{
$result['result'] = 'failed';
$result['error'] =$f_name."上傳失敗";
}

❺ php 上傳文件

剛學php時寫的一個類,可以給你參考下,你所說的功能基本上也都有。

這個用作學習還是不錯的。


classfileup{
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();
}
//設置文件上傳的參數,不設置為默認值。
functionsetfilepar($par){
$pars=array('filetype','maxsize','savename');
foreach($paras$key=>$value){
if(in_array($key,$pars)){
$this->$key=$value;
}else{
continue;
}
}
}
//檢查上傳
privatefunctioncheckfileup(){
//判斷文件夾是否正確或文件夾是否有可寫入的許可權。
if(!is_dir($this->savefilepath)||!is_writable($this->savefilepath)){
$this->uperror=8;
returnfalse;
}
//判斷文件名是否存在
if(is_file($this->newname)){
$this->uperror=9;
returnfalse;
}
//判斷上傳文件的類型是否正確。
if(!in_array(strtolower($this->filehz),$this->filetype)){
$this->uperror=-1;
returnfalse;
}
returntrue;
}
//獲取新的文件名字
privatefunctiongetnewname(){
$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;
}
}

//獲取錯誤信息
privatefunctiongetuperror(){
switch($this->uperror){
case1:echo'上傳文件超過了系統指定的大小';break;
case2:echo'上傳文件超過了表單中指定的大小';break;
case3:echo'文件只有部分上傳';break;
case4:echo'沒有文件上傳';break;
case6:echo'找不到上傳的文件,系統錯誤';break;
case7:echo'文件寫入失敗';break;
case8:echo'文件路徑不存在,或不可寫';break;
case9:echo'文件名已經存在,請不要重復上傳';break;
case-1:echo'不是指定上傳的文件';break;
case-2:echo'請勿使用非法途徑上傳';break;
case-3:echo'文件上傳失敗';break;
default:'未知錯誤';break;

}
}


functionfileupload(){
if(!$this->checkfileup()||$this->uperror!=0){
$this->getuperror();
returnfalse;
}else{
if(!is_uploaded_file($_files[$this->upfileform]['tmp_name'])){
$this->uperror=-2;
$this->getuperror();
returnfalse;
}else{
if(move_uploaded_file($_files[$this->upfileform]['tmp_name'],$this->newname)){
returntrue;
}else{
$this->uperror=-3;
returnfalse;
}
}
}
}
//獲取文件名
functiongetname(){
return$this->newname;
}


}

❻ 如何讓php上傳超大文件

1.在php.ini修改上傳文件的大小
打開php.ini,首先找到(前4個夠用了)
file_uploads = on ;是否允許通過http上傳文件的開關。默認為on即是開
upload_tmp_dir ;文件上傳至伺服器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
upload_max_filesize = 8m ;望文生意,即允許上傳文件大小的最大值。默認為2m
post_max_size = 8m ;指通過表單post給php的所能接收的最大值,包括表單里的所有值。默認為8m
一般地,設置好上述四個參數後,上傳<=8m的文件是不成問題,在網路正常的情況下。
但如果要上傳>8m的大體積文件,只設置上述四項還一定能行的通。
進一步配置以下的參數
max_execution_time = 600 ;每個php頁面運行的最大時間值(秒),默認30秒
max_input_time = 600 ;每個php頁面接收數據所需的最大時間,默認60秒
memory_limit = 8m ;每個php頁面所吃掉的最大內存,默認8m
把上述參數修改後,在網路所允許的正常情況下,就可以上傳大體積文件了
max_execution_time = 600
max_input_time = 600
memory_limit = 32m
file_uploads = on
upload_tmp_dir = /tmp
upload_max_filesize = 32m
post_max_size = 32m
2如果還是解決不了.
nginx修改上傳文件大小限制
在 /etc/nginx/conf.d/下 找到你的配置文件 在location中加上這樣一段代碼
location / {
root html;
index index.html index.htm;
client_max_body_size 5000m;
}
切記!!!修改完配置文件要重啟!重啟!重啟!

❼ php 文件上傳

//$uploaddir = "d:my documents/phpnow/htdocs/mysite/_notes/upload/";原代碼,路徑少了個斜杠,按道理是錯誤的.
$uploaddir = "d:/my documents/phpnow/htdocs/mysite/_notes/upload/";//設置文件保存目錄 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//設置允許上傳文件的類型
// 下面這句,程序中都沒有用到,估計是用來做預覽圖片的瀏覽路徑的.
//因為,如果是在伺服器上面,使用$uploaddir這種本地路徑(相對於http://這種網路路徑)的地址來
//訪問是訪問不到的,所以應該改成這樣如下,相應的圖片的預覽路徑也有一點改動
$patch="http://127.0.0.1/mysite/_notes/upload/";//程序所在路徑
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}//獲取文件後綴名函數
function random($length)
{
$hash = 'cr-';
$chars = '';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i )
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
$a=strtolower(fileext(@$_files['file']['name']));//生成隨機文件名函數
if(!in_array(strtolower(fileext(@$_files['file']['name'])),$type))
{
$text=implode(",",$type);
echo "您只能上傳以下類型文件: ",$text,"
";
}//判斷文件類型
else
{
$filename=explode(".",$_files['file']['name']);
do
{
$filename[0]=random(6); //設置隨機數長度
$name=implode(".",$filename); //$name1=$name.".mcncc";
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
//原代碼是先移動文件(已經移動,原文件不存在了),後判斷是否是通過上傳的文件(當然了,文件都沒了,怎麼還會是true呢.),
if(is_uploaded_file(@$_files['file']['tmp_name'])&&move_uploaded_file(@$_files['file']['tmp_name'],$uploadfile)){
//輸出圖片預覽,注意img標簽的src,有改動
echo "

您的文件已經上傳完畢 上傳圖片預覽:

";
echo"
";
}else{
echo "上傳失敗!";
}
}
?>

❽ php上傳文件代碼,怎麼寫

2樓和3樓給你的回答就跟sb一樣,自己比你還菜,就瞎扯。我問問題的時候就是被這些sb不停騷擾導致最後無人回答了。

上傳代碼看這里(帶重命名的):


上傳文件:

重命名為:




文件上傳到伺服器需要一些時間

$uploaddir="/"; //為目錄變數指定目錄位置
$uploaderror=$_files['upload']['error'];
$filename=$_files['upload']['name'];
$filetemname=$_files['upload']['tmp_name'];
$filesize=$_files['upload']['size'];
$newname=$_post['newname'];
function upload(){
global $uploaddir,$uploaderror,$filename,$filetemname,$filesize,$filesuffix,$newname;
if($newname){ //如果需要被更新文件名
$filerename=$newname.".".pathinfo($filename,pathinfo_extension); //採用新文件名 獲取文件名後綴
}else{ //如果不需要更新文件名
$filerename=$filename; //定義文件存儲位置,並在文件名前加一組隨機數字
}
if($uploaderror>0){ //0表示沒有錯誤發生,文件上傳成功
echo"錯誤:";
switch($uploaderror){
case 1:echo"上傳文件超過配置文件規定值。";break; //1表示上傳的文件超過了php.ini中upload_max_filesize選項限制的值
case 2:echo"上傳文件超過表單約定值。";break; //2表示上傳文件的大小超過了 html 表單中 max_file_size 選項指定的值。
case 3:echo"上傳文件不完全。";break; //3表示文件只有部分被上傳。
case 4:echo"沒有上傳文件。";break; //4表示沒有文件被上傳。
}
}else{
if(is_uploaded_file($filetemname)){ //確認文件通過http post上傳
if(!move_uploaded_file($filetemname,($uploaddir.$filerename))){ //如果無法將上傳的文件移動到新位置
echo"文件上傳失敗,請重新上傳。";
}else{ //否則返回成功信息
echo"文件上傳成功!
".date("y-m-d h:i:s")."
上傳文件:".$filename."
文件大小:".number_format(($filesize/1024/1024),2)."mb"."
重命名為:".$filerename;
}
}else{ //如果不是通過http post方式上傳,則提示非法信息
echo"文件".$filename."不合法!";
}
}
}
if(!empty($filename)){
if(is_dir($uploaddir)){ //如果目錄存在
upload(); //則執行上傳流程
}else{ //如果目錄不存在
mkdir($uploaddir); //則創建目錄
upload(); //再執行上傳流程
}
}else{
echo"請選擇需要上傳的文件。";
}
?>

❾ php上傳文件

你確定你下面展示的php代碼是d:\php\phpnow-1.5.6\htdocs\dz\upload\source\plugin\autosend\upload.php的這個文件?

❿ 怎麼將php文件上傳到伺服器上

創建一個文件上傳表單
允許用戶從表單上傳文件是非常有用的。
請看下面這個供上傳文件的 html 表單:


enctype="multipart/form-data">








請留意如下有關此表單的信息:
標簽的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進制數據時,比如文件內容,請使用 "multipart/form-data"。
標簽的 type="file" 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。
注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。
創建上傳腳本
"upload_file.php" 文件含有供上傳文件的代碼:
if ($_files["file"]["error"] > 0)
{
echo "error: " . $_files["file"]["error"] . "
";
}
else
{
echo "upload: " . $_files["file"]["name"] . "
";
echo "type: " . $_files["file"]["type"] . "
";
echo "size: " . ($_files["file"]["size"] / 1024) . " kb
";
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:
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"] . "
";
}
else
{
echo "upload: " . $_files["file"]["name"] . "
";
echo "type: " . $_files["file"]["type"] . "
";
echo "size: " . ($_files["file"]["size"] / 1024) . " kb
";
echo "stored in: " . $_files["file"]["tmp_name"];
}
}
else
{
echo "invalid file";
}
?>
注釋:對於 ie,識別 jpg 文件的類型必須是 pjpeg,對於 firefox,必須是 jpeg。
保存被上傳的文件
上面的例子在伺服器的 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"] . "
";
}
else
{
echo "upload: " . $_files["file"]["name"] . "
";
echo "type: " . $_files["file"]["type"] . "
";
echo "size: " . ($_files["file"]["size"] / 1024) . " kb
";
echo "temp file: " . $_files["file"]["tmp_name"] . "
";
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";
}
?>
上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。
熱點內容
驅動軟體哪個安卓版好 發布:2024-11-19 10:08:28 瀏覽:703
伺服器一鍵搭建java環境 發布:2024-11-19 10:08:27 瀏覽:729
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:98
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:828
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:310
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:940
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:822
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:636
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:194
网站地图