明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用PHP完成文件上傳二法

[摘要]PHP(Hypertext Preprocessor)是一種 HTML 內(nèi)嵌式的語言 (類似 IIS上的ASP)。而 PHP 獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 式的新語法。它可以比 CGI 或者 Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁。除此之外,用 PHP 寫出來的 Web 后端CGI...

PHP(Hypertext Preprocessor)是一種 HTML 內(nèi)嵌式的語言 (類似 IIS上的ASP)。而 PHP 獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 式的新語法。它可以比 CGI 或者 Perl更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁。除此之外,用 PHP 寫出來的 Web 后端CGI 程序,可以很輕易的移植到不同的系統(tǒng)平臺(tái)上。

我們?cè)谧鼍W(wǎng)站時(shí),需要訪問者的參于才能將網(wǎng)站建設(shè)得更加引人注目,這就要求我們從訪問者那里得到文章、圖片等。因此,文件上傳成為網(wǎng)頁中必不可少的功能。現(xiàn)在我就利用現(xiàn)在流行的編程語言PHP,用兩種方法來說明其功能的實(shí)現(xiàn)。

一、利用php的文件函數(shù)來實(shí)現(xiàn)上傳
這段代碼分為兩個(gè)文件,一個(gè)為upload.html,一個(gè)是upload.php。

上傳文件選擇:upload.html 代碼如下:

<html><head><title>上載文件表單</title></head>

<body>

<form enctype="multipart/form-data" action="upload.php" method="post">

<input type="hidden" name="max_file_size" value="100000">

<center>請(qǐng)選擇文件:

<input name="userfile" type="file">

<input type="submit" value="上傳文件">

</center>

</form>

</body>

</html>


*** 說明 ***

1、請(qǐng)注意<form enctype="multipart/form-data"……>這是一個(gè)標(biāo)簽,我們要實(shí)現(xiàn)文件的上傳,必須指定為multipart/form-data ,否則服務(wù)器將不知道你在干什么!

2、值得注意的是文件upload.html中表單選項(xiàng) MAX_FILE_SIZE 的隱藏值域,通過設(shè)置

其Value(值)可以限制上載文件的大小。

處理剛剛上傳的文件:upload.php 代碼如下:

<html>

<head>

<title>處理上載文件</title>

</head>

<body>

<?

copy($userfile,"newfile");

echo $userfile."-用戶上傳到服務(wù)器上的文件臨時(shí)存放的名稱<br>";

echo $userfile_name."-在用戶機(jī)器上該文件的原始名稱<br>";

echo $userfile_size."-上傳文件的實(shí)際字節(jié)數(shù)<br>";

echo $userfile_type."-如果用戶的瀏覽器提供了這個(gè)信息的話,它表示mime的類型。例如image/gif<br>";

?>

</body>

</html>


*** 說明 ***

1、使用了PHP文件函數(shù)copy()將上載到臨時(shí)目錄下的文件拷貝到一個(gè)特定的目錄下,并重新命名為"newfile"。

2、在upload.html中定義了一個(gè)變量userfile,在upload.php中,我們就可以使用這個(gè)變量,直接通過$userfile訪問上載的文件,但由于這是一個(gè)保存文件的變量,因此文件名字必須通過另外一個(gè)$userfile_name變量取得。

下面是這個(gè)變量的具體用法:

$userfile:在將要存放上載文件的服務(wù)器上的臨時(shí)文件名字。

$userfile_name:在發(fā)送者系統(tǒng)中的初始文件名。

$userfile_size:按字節(jié)計(jì)算的上載文件的大小。

$userfile_type:多用途網(wǎng)際郵件擴(kuò)充協(xié)議類型的文件,前提是瀏覽器提供這種信息,比如說“image/gif"。



二、利用FTP功能進(jìn)行文件上傳
這段代碼同樣分為兩個(gè)文件,一個(gè)為upload.php,一個(gè)是ftp.php。

設(shè)置ftp的相關(guān)選項(xiàng)及選擇上傳文件名:upload.php 代碼如下:

<?php

$username="用戶名";

$password="用戶密碼";

$server="主機(jī)名";

$cdir="上傳目錄名" ;

//以上設(shè)置你的FTP主機(jī)名、用戶名和用戶密碼

?>

<!-- 文件上傳設(shè)置標(biāo)簽 -->

<form enctype="multipart/form-data" action=ftp.php method=post>

<!-- 傳遞變量 -->

<input type=hidden name=username value=<? Echo $username; ?>>

<input type=hidden name=password value=<? Echo $password; ?>>

<input type=hidden name=server value=<? Echo $server; ?>>

<input type=hidden name=cdir value=<? Echo $cdir; ?>>

<table>

<tr>

<td>上傳文件選擇

<input type=file name=upfile>

</td>

</tr>

<tr>

<td>

<!-- 提交表單-->

<input type=submit name=action value=上傳>

</td>

</tr>

</table>

</form>


處理上傳文件:ftp.php 代碼如下:

<?php

//ftp聯(lián)接主機(jī)函數(shù)

function connect()

{

global $server, $username, $password;

$conn = ftp_connect($server);

ftp_login($conn, $username, $password);

return $conn;

}

//建立ftp聯(lián)接

$result = connect();

if ($action == "上傳")

{

//用來改變ftp路徑

ftp_chdir($result, $cdir);

//用來上傳指定的文件,同名并以二進(jìn)制位傳遞

$res_code = ftp_put($result, $upfile_name, $upfile, FTP_BINARY);

// 判斷是否正確上傳

if ($res_code == 1)

echo "上傳成功!";

else

echo "上傳錯(cuò)誤!";

}

// 關(guān)閉聯(lián)接

ftp_quit($result);

?>


*** 說明 ***

函數(shù)ftp_put(int ftp_stream, string remote_file, string local_file, int mode)用法

返回值: 布爾值

本函數(shù)用來上傳指定的文件。參數(shù) ftp_stream 為 FTP 的連接代碼。參數(shù) remote_file為欲存在遠(yuǎn)端的文件名。參數(shù) local_file 為欲上傳文件的文件名。參數(shù) mode 的值有 FTP_ASCII 及FTP_BINARY 二種,分別表示文檔或者是二進(jìn)位文件。成功則返回 true 值,失敗則返回 false 值。