⑴ 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將本地的文件上傳到伺服器上
創建一個文件上傳表單
允許用戶從表單上傳文件是非常有用的。
請看下面這個供上傳文件的 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>
請留意如下有關此表單的信息:
<form> 標簽的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進制數據時,比如文件內容,請使用 "multipart/form-data"。
<input> 標簽的 type="file" 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。
注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。
創建上傳腳本
"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) . " Kb<br />";
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:
<?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) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}
?>
注釋:對於 IE,識別 jpg 文件的類型必須是 pjpeg,對於 FireFox,必須是 jpeg。
保存被上傳的文件
上面的例子在伺服器的 PHP 臨時文件夾創建了一個被上傳文件的臨時副本。
這個臨時的復制文件會在腳本結束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:
<?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) . " Kb<br />";
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";
}
?>
上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。
⑶ 浠涔堟槸ftp鏂囦歡,鎬庝箞灝唒hp緗戠珯鏂囦歡涓婁紶鍒版湇鍔″櫒
ftp鏄鏂囦歡浼犺緭鍗忚錛屽埄鐢ㄦゅ崗璁鍙浠ュ湪緗戠粶涓婁紶杈撴枃浠躲
鎶婃枃浠朵笂浼犲埌鏈嶅姟鍣錛屼竴鑸閮芥槸浣跨敤ftp鐨勬柟娉曪紝鍥犱負寰寰鏈嶅姟鍣ㄩ兘浼氭彁渚沠tp鍔熻兘銆傚叿浣撴搷浣滈渶瑕佸畨瑁呬竴涓鏂逛究鎿嶄綔鐨刦tp瀹㈡埛絝錛屼緥濡俆otalCommander灝卞緢濂斤紝鍦ㄥ㈡埛絝閲岄潰寤鴻涓涓浼氳瘽錛岃緭鍏ユ湇鍔″櫒鐨勫湴鍧銆佺敤鎴峰悕銆佸瘑鐮侊紝鐒跺悗灝卞彲浠ヨ繛鎺ユ湇鍔″櫒錛岃繛鎺ユ垚鍔熷悗鍙浠ョ湅瑙佹湇鍔″櫒涓婄殑鏂囦歡錛屽彲浠ュ拰鏈鍦扮殑榪涜屽弻鍚戜紶杈擄紙鍙浠ヤ笂浼犲拰涓嬭澆錛夈
濡傛灉鍙涓婁紶涓鍒鏂囦歡錛屽彲浠ヤ嬌鐢ㄦ祻瑙堝櫒鎴栬匘OS榪涜屼紶杈擄紝嫻忚堝櫒鐨勬柟娉曟槸鎵撳紑鍦板潃錛歠tp://鐢ㄦ埛鍚:瀵嗙爜@鏈嶅姟鍣ㄥ湴鍧/錛孌OS鍛戒護鏄痜tp 鏈嶅姟鍣ㄥ湴鍧錛岀劧鍚庤緭鍏ョ敤鎴峰悕鍜屽瘑鐮併
⑷ php 批量大文件上傳下載如何實現
1.首先抄還是查看環境是否支持超大容量上傳的支持,500M以上的文件通常為視頻文件;
2.即然他要上傳500M以上的文件,估計伺服器性能必定非同凡想,所以暫可不考慮伺服器硬體配置問題,但一定要考慮到網速問題,建議1000M以上出入速率,如少於這個數,你可以放棄這個方案了;
3.前面硬體都過關了,但程序也要加強了,一下上傳500M是哪種語言都不能實現的,唯一解決方案,文件切割,如迅雷下載原理一樣(採用續點上傳),分成若干小塊,然後全部上傳完畢以後,再進行文件合成。
4.至於PHP的文件切割,切割後上傳,以及文件合並,此類代碼網上有許多,樓主可查詢並選擇適合你的代碼,實現你的功能!
⑸ 濡備綍浣跨敤php涓璮tp鍑芥暟涓婁紶鏂囦歡浠ュ強瑙e喅涓婁紶鏂囦歡澶辮觸鐨勬柟娉
鍥犱負緋葷粺閲嶆瀯瀹炵幇鍧囪璐熻澆錛岀綉絝欑▼搴忎笌鏂囦歡鏈嶅姟鍣ㄤ笉鍦ㄤ竴鍙版満瀛愪笂銆備簬鏄錛岀▼搴忓湪涓婁紶鏂囦歡鐨勫悓鏃跺氨瑕佸皢鏂囦歡涓婁紶鍒版枃浠舵湇鍔″櫒涓娿
榪欓噷娑夊強鍒皐indows涓繪満涓婁紶鍒發inux涓繪満錛宭inux涓繪満涓婁紶鍒發inux涓繪満銆傝繖涓や釜涔嬮棿鍛錛屽彧鏄紼嶅井鐨勬湁鐐瑰尯鍒錛屽洜涓簑indows鐨勮礬寰勫彲浠ュ吋瀹筶inux璺寰勶紝浣嗘槸linux鐨勮礬寰勪笉鍏煎箇indows涓繪満'\\'鐨勫啓娉曘傛墍浠ワ紝鍦ㄥ啓璺寰勭殑鏃跺欑◢鍔犳敞鎰忓嵆鍙銆
涓嬮潰錛屽氨鍒椾婦涓婇潰涓ょ嶆儏鍐祊hp涓浣跨敤ftp鍑芥暟涓婁紶鏂囦歡鐨勫叿浣撳疄鐜頒唬鐮併
涓銆 ftp涓婁紶鍥劇墖鍙傛暟璇存槑銆
$source錛氭湰鏈哄浘鐗囧畬鏁寸殑璺寰勩(/a/b/c.jpg)
$des 錛氫笂浼犵洰鏍噇inux涓繪満瀹屾暣鐨勮礬寰勩
$ftp_server錛歠tp鍦板潃
$ftp_user_name錛歠tp鐢ㄦ埛鍚
$ftp_user_pass: ftp瀵嗙爜
$port:絝鍙
浜屻佸備綍浣跨敤php涓璮tp鍑芥暟涓婁紶鏂囦歡鐨勬柟娉
渚嬪傦細
鏈鍦板湴鍧涓猴細/a/b/c.jpg
鐩鏍囧湴鍧涓猴細/d/a/b/c.jpg
2.1銆乴inux涓繪満涓婁紶linux涓繪満銆
function ftpSendFile($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
// 姝ゆラゆ槸鍦ㄤ簬涓婁紶鐩褰曚笌鏈鏈虹殑鐩褰曚笉涓鑷磋漿鎹浣跨敤
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname($des);
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, $des, $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
2銆亀indows涓繪満涓婁紶linux涓繪満銆
function sendPic($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)
{
$des = "/d" . $des;
$conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
$ftp_folder = dirname(str_ireplace('\\', '/', $des));
$dir = explode("/", $ftp_folder);
$path = "";
for ($i = 0; $i < count($dir); $i++) {
$path .= "/" . $dir[$i];
if (!ftp_chdir($conn_id, $path)) {
$result = ftp_mkdir($conn_id, $path);
}
}
if (ftp_put($conn_id, str_ireplace('\\', '/', $des), $source, FTP_BINARY)) {
return 1;
} else {
return 0;
}
ftp_close($conn_id);
}
涓婇潰鐨勪袱縐嶄嬌鐢╬hp涓璮tp鍑芥暟涓婁紶鏂囦歡鐨勬柟娉曞熀鏈鍙浠ユ弧瓚蟲e父鐨勪嬌鐢ㄣ