php附件上傳
!
需要在PHP.ini里設置以下幾項:
1.
post_max_size
=10M
表單提交最大數據為10M.此項不是限制上傳單個文件的大小,而是針對整個表單的提交數據進行限制的.
2.file_uploads
=
On
是否允許上傳文件,如果為OFF您將不能上傳文件.
3.upload_tmp_dir
=
"D:/APM/PHP/uploadtemp/"
上傳文件時系統使用的緩存目錄.如果此目錄所在磁碟空間不足的話您將不能上傳文件.
4.upload_max_filesize
=2M
最大上傳文件大小,此項針對上傳文件時單個文件的大小.
與post_max_size之間的關系:
在論壇發表貼子時,您post_max_size
設為10M,而此項設成了2M,那麼您只能上傳最大為2M的附件,且可以同時上傳5個.
注意:很多人遇到修改php.ini後重應WEB服務後仍然不能生效.這種情況應該先確認一下所改的php.ini是不是當前PHP所使用的.
您可以在WEB目錄下建立一個php文件,內容很簡單就一句話
代碼:
<?
2. php上傳文件到其他伺服器(php文件上傳)
怎麼將php文件上傳到伺服器上1、可以和本地的進行雙向傳輸(可以上傳和下載)。如果只上傳個別文件,可以使用瀏覽器或者DOS進行傳輸,瀏覽器的方法是打開地址:ftp://用戶名:密碼@伺服器地址/,DOS命令是ftp伺服器地址,然後輸入用戶名和密碼。
2、登錄你購買的空間的ftp後台,將你做好的php網頁上傳到伺服器上,記得買空間的時候要買支持php服務的。一切正常的話,然後上網就可以訪問你的php文件了。
3、可以點擊下面的「建立備份」一。點擊建立「備份用FTP」。用FTP將您自己的資料庫備份文件上傳到伺服器上,覆蓋伺服器上的bak(sql2000)/sql(Mysql)。再點從備份一中的「備份中還原。
4、你要是用的比如類似織夢CMS一樣的程序的話把你下載的源文件直接上傳到伺服器上然後按照說明安裝就可以了。
5、接下來,您需要在伺服器上安裝一個PHP直播源,比如Red5,Kurento或者Wowza,這些都是支持PHP的直播源。安裝完成後,您可以使用PHP腳本來控制直播源,比如控制直播源的音量,調整直播流的質量,控制直播源的播放速度等等。
6、要分情況來說,如果你是申請的網上的免費主頁空間(支持php),那麼空間的提供商一般會給你提供一個後台的界面讓你上傳文件,或者給你開通ftp服務,通過ftp上傳,你的web地址(域名)由空間提供商給你。
如何把自己的php文件發布到互聯網上?1、下載安裝FTP軟體,輸入伺服器IP地址,FTP的用戶名和密碼進行連接。連接FTP後,找到要上傳的PHP項目文件,上傳到伺服器即可。
2、第一,你需要一個域名,你要把伺服器跟你的域名綁定,一般買的虛擬主機的話會提供一個後台給你配置域名綁定的,如果是買的獨立的伺服器則需要自己配置綁定。
3、通過使用PHP的全局數組$_FILES,你可以從客戶計算機向遠程伺服器上傳文件。第一個參數是表單的inputname,第二個下標可以是name,type,size,tmp_name或error。
4、首先,保證電腦上安裝有ie類型瀏覽器,同時有一份php類型源代碼,如圖。在電腦上有一份php源代碼文件後,在該源代碼文件裡面找到一個名為main的文件件。
5、安裝上去就可以了。完全免費。這類軟體其實很多。區域網用嘛,就用WAMP好了,安裝上去,把PHP源代碼放進去就行了,也沒有什麼復雜設置。功能也足夠多。世界有一大半的網站遠行的是APACHE。WAMP集成環境也非常流行。
php如何上傳圖片到遠程伺服器首先,在自己台式機和筆記本上都開通了ftp,這個不會的同學可以網上查serv-u,相關教程肯定不少的。
使用imagepng函數把圖像輸出到瀏覽器或者文件中。
用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。
php上傳圖片客戶端和伺服器端實現方法分享給大家供大家參考。
3. thinkphp3.2.3 怎麼上傳form表單
上傳表單
在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交:
<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
注意,要使用上傳功能 你的表單需要設置 enctype="multipart/form-data"
多文件上傳支持
如果需要使用多個文件上傳,只需要修改表單,把
<input type='file' name='photo'>
改為
<input type='file' name='photo1'>
<input type='file' name='photo2'>
<input type='file' name='photo3'>
或者
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
兩種方式的多附件上傳系統的文件上傳類都可以自動識別。
上傳操作
ThinkPHP文件上傳操作使用Think\Upload類,假設前面的表單提交到當前控制器的upload方法,我們來看下upload方法的實現代碼:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功
$this->success('上傳成功!');
}
}
上傳類對圖片文件的上傳安全做了支持,如果企圖上傳非法的圖像文件,系統會提示 非法圖像文件。 為了更好的使用上傳功能,建議你的伺服器開啟finfo模塊支持
上傳參數
在上傳操作之前,我們可以對上傳的屬性進行一些設置,Upload類支持的屬性設置包括:
屬性描述
maxSize文件上傳的最大文件大小(以位元組為單位),0為不限大小
rootPath文件上傳保存的根路徑
savePath文件上傳的保存路徑(相對於根路徑)
saveName上傳文件的保存規則,支持數組和字元串方式定義
saveExt上傳文件的保存後綴,不設置的話使用原文件後綴
replace存在同名文件是否是覆蓋,默認為false
exts允許上傳的文件後綴(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
mimes允許上傳的文件類型(留空為不限制),使用數組或者逗號分隔的字元串設置,默認為空
autoSub自動使用子目錄保存上傳文件 默認為true
subName子目錄創建方式,採用數組或者字元串方式定義
hash是否生成文件的hash編碼 默認為true
callback檢測文件是否存在回調,如果存在返迴文件信息數組
上面的屬性可以通過兩種方式傳入:
實例化傳入
我們可以在實例化的時候直接傳入參數數組,例如:
$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);// 實例化上傳類
關於saveName和subName的使用後面我們會有詳細的描述。
動態賦值
支持在實例化後動態賦值上傳參數,例如:
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728;
$upload->rootPath = './Uploads/';
$upload->savePath = '';
$upload->saveName = array('uniqid','');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
上面的設置和實例化傳入的效果是一致的。
上傳文件信息
設置好上傳的參數後,就可以調用Think\Upload類的upload方法進行附件上傳,如果失敗,返回false,並且用getError方法獲取錯誤提示信息;如果上傳成功,就返回成功上傳的文件信息數組。
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename'];
}
}
每個文件信息又是一個記錄了下面信息的數組,包括:
屬性描述
key附件上傳的表單名稱
savepath上傳文件的保存路徑
name上傳文件的原始名稱
savename上傳文件的保存名稱
size上傳文件的大小
type上傳文件的MIME類型
ext上傳文件的後綴類型
md5上傳文件的md5哈希驗證字元串 僅當hash設置開啟後有效
sha1上傳文件的sha1哈希驗證字元串 僅當hash設置開啟後有效
文件上傳成功後,就可以使用這些文件信息來進行其他的數據操作,例如保存到當前數據表或者單獨的附件數據表。
例如,下面表示把上傳信息保存到數據表的欄位:
$model = M('Photo');
// 取得成功上傳的文件信息
$info = $upload->upload();
// 保存當前數據對象
$data['photo'] = $info[0]['savename'];
$data['create_time'] = NOW_TIME;
$model->add($data);
單文件上傳
upload方法支持多文件上傳,有時候,我們只需要上傳一個文件,就可以使用Upload類提供的uploadOne方法上傳單個文件,例如:
public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
// 上傳單個文件
$info = $upload->uploadOne($_FILES['photo1']);
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
echo $info['savepath'].$info['savename'];
}
}
uploadOne方法上傳成功後返回的文件信息和upload方法的區別是只有單個文件信息的一維數組。
上傳文件的命名規則
上傳文件的命名規則(saveName)用於確保文件不會產生沖突或者覆蓋的情況。命名規則的定義可以根據你的業務邏輯來調整,不是固定的。例如,如果你採用時間戳的方式來定義命名規范,那麼在同時上傳多個文件的時候可能產生沖突(因為同一秒內可以上傳多個文件),因此你需要根據你的業務需求來設置合適的上傳命名規則。這里順便來說下saveName參數的具體用法。
一、採用函數方式
如果傳入的字元串是一個函數名,那麼表示採用函數動態生成上傳文件名(不包括文件後綴),例如:
// 採用時間戳命名
$upload->saveName = 'time';
// 採用GUID序列命名
$upload->saveName = 'com_create_guid';
也可以採用用戶自定義函數
// 採用自定義函數命名
$upload->saveName = 'myfun';
默認的命名規則設置是採用uniqid函數生成一個唯一的字元串序列。
saveName的值支持數組和字元串兩種方式,如果是只有一個參數或者沒有參數的函數,直接使用字元串設置即可,如果需要傳入額外的參數,可以使用數組方式,例如:
// 採用date函數生成命名規則 傳入Y-m-d參數
$upload->saveName = array('date','Y-m-d');
// 如果有多個參數需要傳入的話 可以使用數組
$upload->saveName = array('myFun',array('__FILE__','val1','val2'));
如果需要使用上傳的原始文件名,可以採用__FILE__傳入,所以上面的定義規則,最終的結果是 myFun('上傳文件名','val1','val2')執行的結果。
二、直接設置上傳文件名
如果傳入的參數不是一個函數名,那麼就會直接當做是上傳文件名,例如:
$upload->saveName = time().'_'.mt_rand();
表示上傳的文件命名採用時間戳加一個隨機數的組合字元串方式。
當然,如果覺得有必要,你還可以固定設置一個上傳文件的命名規則,用於固定保存某個上傳文件。
$upload->saveName = 'ThinkPHP';
三、保持上傳文件名不變
如果你想保持上傳的文件名不變,那麼只需要設置命名規范為空即可,例如:
$upload->saveName = '';
一般來說不建議保持不變,因為會導致相同的文件名上傳後被覆蓋的情況。
子目錄保存
saveName只是用於設置文件的保存規則,不涉及到目錄,如果希望對上傳的文件分子目錄保存,可以設置autoSub和subName參數來完成,例如:
// 開啟子目錄保存 並以日期(格式為Ymd)為子目錄
$upload->autoSub = true;
$upload->subName = array('date','Ymd');
可以使用自定義函數來保存,例如:
// 開啟子目錄保存 並調用自定義函數get_user_id生成子目錄
$upload->autoSub = true;
$upload->subName = 'get_user_id';
和saveName參數一樣,subName的定義可以採用數組和字元串的方式。
注意:如果get_user_id函數未定義的話,會直接以get_user_id字元串作為子目錄的名稱保存。
子目錄保存和文件命名規則可以結合使用。
上傳驅動
上傳類可以支持不同的環境,通過相應的上傳驅動來解決,默認情況下使用本地(Local)上傳驅動,當然,你還可以設置當前默認的上傳驅動類型,例如:
'FILE_UPLOAD_TYPE' => 'Ftp',
'UPLOAD_TYPE_CONFIG' => array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 ),
表示當前使用Ftp作為上傳類的驅動,上傳的文件會通過FTP傳到指定的遠程伺服器。
也可以在實例化上傳類的時候指定,例如:
$config = array(
'maxSize' = 3145728,
'rootPath' = './Uploads/',
'savePath' = '',
'saveName' = array('uniqid',''),
'exts' = array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' = true,
'subName' = array('date','Ymd'),
);
$ftpConfig = array(
'host' => '192.168.1.200', //伺服器
'port' => 21, //埠
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 );
$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 實例化上傳類
目前已經支持的上傳驅動包括Local、Ftp、Sae、Bcs、七牛和又拍雲等。
4. php中上傳文件的方法有多少種
一、傳統的php寫的上傳類。
寫一個php的上傳類,這個方法用到的知識全部是php的,而且技術的難點也不多。
<form method="post" action="upload.php" enctype="multipart/form-data">
<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">//隱藏域。這里name必須設置成MAX_FILE_SIZE,其值就是上傳文件的最大長度,單位是B,這里我限製成2M
<input name="file" type="file" value="瀏覽" >
< input type="submit" value="上傳" name="B1">
</table>
</form>
服務端利用php的$_FILES['file']['name']來獲取文件後綴名,具體的代碼自己查找資料看看,這里就不多說了。
總結;這個方法可以用來上傳小於2M的文件或者是圖片,基本的功能可以實現。
二、利用uploadify插件
這個是利用jQuery的上傳插件,上傳可以帶進度條,容易配置。
總結:可以上傳一些大文件,和圖片,而且帶進度條,可以多文件上傳,在WEB中會經常用。
三、利用網路的webupload
WebUploader 是由 Bai FEX 團隊開發的一款以 HTML5 為主,FLASH 為輔的現代文件上傳組件。在現代的瀏覽器裡面能充分發揮 HTML5 的優勢,同時又不摒棄主流IE瀏覽器,沿用原來的 FLASH 運行時,兼容 IE6+,iOS 6+, Android 4+。採用大文件分片並發上傳,極大的提高了文件上傳效率。
四、swfupload的插件
這是一個jquery的上傳插件,功能也非常強大,開發也比較容易,網上有很多的資料,可以自行查找。
5. phpcms鍓嶅彴鎬庝箞涓婁紶鏂囦歡php濡備綍瀹炵幇鏂囦歡涓婁紶鍔熻兘
phpcmsv9濡備綍涓婁紶鏂囩珷
phpcmsv9娓稿㈠湪鍚庡彴鍙戝竷鏂囩珷錛屾病鏈変笂浼犻檮浠剁殑鍔熻兘銆娓稿㈠彂甯冩枃絝狅紝鍚庢潵鍙戠幇娓稿㈠浘鐗囦笂浼犱笉浜嗐傛病鏈夐檮浠朵笂浼犲姛鑳斤紝鍚庡彴璁劇疆涓哄厑璁告父瀹涓婁紶闄勪歡銆傜粨鏋滆繕鏄涓嶈屻傞櫎浜嗕慨鏀圭▼搴忥紝娌℃湁鍒鐨勫姙娉曘傝ユ柟娉曞備笅:
phpcms鍐呭硅彶灝斿吂緙栬緫form.inc.php
鍙戠幇
娉ㄩ噴鎺夛紝//$allowupload=defined(IN_ADMINallowattachment
put$allowupload=1錛//榪愯岃塊棶鑰呬笂浼犻檮浠
榪欏厑璁告瘡涓浜轟笂浼犻檮浠躲
浣嗘槸鏈変竴涓闂棰樸
浣犲彲浠ヤ笂浼犱箣鍚庯紝閲岄潰榪樻湁鍥懼簱鍜屾枃浠舵祻瑙堛傛垜涓嶆兂璁╃敤鎴風湅鍒板埆浜虹殑鍥劇墖錛屾墍浠ュ湪榪欓噷淇鏀瑰備笅:
phpcms闄勪歡妯℃澘swfupload.tpl.php
鍔犳敞閲
Tab_swf_3鍜4閮ㄥ垎灝卞熶簡銆
鍘誨仛鍚с傚ソ浜嗭紝浣犲畬鎴愪簡銆
cms2.0鐢佃剳涓婃庝箞璁劇疆錛
1銆佹墍鏈夋ā鏉挎柟妗堥兘淇濆瓨鍦./phpcms/templates/鐩褰曚笅錛堝傛灉闇瑕佸湪綰誇慨鏀癸紝璇烽氳繃ftp灝嗚ョ洰褰曡劇疆涓777錛屽苟搴旂敤鍒板瓙鐩褰曪級
2銆佺綉絝欏綋鍓嶄嬌鐢ㄧ殑妯℃澘鏂規堜負錛氶粯璁ゆā鏉匡紝淇濆瓨璺寰勪負錛./phpcms/templates/default/錛屽叾浠栨ā鏉挎柟妗堢殑鍙樺寲涓嶄細褰卞搷緗戠珯鍓嶅彴鐨勬樉紺恆
3銆佸傛灉闇瑕佸炲姞緗戠珯妯℃澘鏂規堬紝璇鋒妸鏂扮殑妯℃澘鏂規堜笂浼犺嚦./phpcms/templates/鐩褰
4銆佸傛灉闇瑕佸簲鐢ㄦ柊鐨勭綉絝欐ā鏉挎柟妗堬紝璇鋒妸璇ユā鏉挎柟妗堣劇疆涓虹郴緇熼粯璁ゆ柟妗堛
cms鏁版嵁搴撴庝箞璁劇疆錛
鍦‵TP涓鍙浠ヤ慨鏀圭殑銆
鍏蜂綋鐨勬ラわ細
鐧誨綍FTP鎵懼埌浣犵殑鍩熷悕鐨勬枃浠跺す錛
鎵撳紑e/錛屾帴鐫鎵撳紑config/錛
鍦ㄩ噷闈㈢殑config.php涓鍙浠ヤ慨鏀癸紝灝辨槸錛堜綘鐨勫煙鍚/e/config/config.php錛夎繖涓灝辨槸CMS鐨勬暟鎹搴撻厤緗鏂囦歡錛
siteservercms鎬庝箞瀹夎呭晩錛熸垜浼犵殑瀹夎呬笉浜嗗晩錛
棣栧厛鍦ㄦ湰鍦扮數鑴戜笂瑙e帇錛岃В鍘嬪嚭鏉ヤ袱涓鏂囦歡錛歩nstall_package鍜宺eadme,鐢╢tp杞浠跺皢install_package鏂囦歡澶圭殑鎵鏈夋枃浠跺叏閮ㄤ笂浼犺嚦絀洪棿錛岀劧鍚庣洿鎺ュ湪嫻忚堝櫒璁塊棶浣犵殑鍩熷悕錛屾垨鍦ㄦ祻瑙堝櫒杈撳叆浣犵殑鍩熷悕/install/install.php,鍗沖彲鐪嬪埌瀹夎呯晫闈錛屽傛灉浣犱笉鐔熸倝鐨勫彲閫夋嫨鍏ㄦ柊瀹夎咃紝涓鐩寸偣鍑諱笅涓姝ワ紝杈撳叆浣犵殑鏁版嵁搴撳悕縐般佸瘑鐮侊紝鍙婄$悊鍛樼數瀛愰偖綆憋紝鍗沖彲瀹夎呮垚鍔熴