導航:首頁 > 文件教程 > php自動上傳文件

php自動上傳文件

發布時間:2024-05-02 21:41:15

『壹』 php自動上傳文件到遠程伺服器,例如,區域網中某用戶瀏覽該網頁,則自...

基本上用php這種架構,這種功能沒有實現的可能,只能坐等大牛。
因為php運行在伺服器上,向客戶端輸出的只是一段正常的HTML而已。
照里來講,javascript有可能做到這個工作,但是,可惜的是,為了安全起見,js被設定成無法瀏覽或訪問資料庫或是掃描文件系統
而且js還決定於用戶開不開js支持。
所以你的要求註定只能悲催。
同樣,你這種要求要是能很容易實現,你上網還有安全感么?

唯一的解決方案,就是弄個小程序,類似木馬病毒之類的,別人上你的網站時自動下載,安裝,運行。
不過這樣做,對你的網站一點好處都沒有。

不要去想你不應當獲得的東西。
要知道躲在牆腳跟上偷窺美女洗澡的,從來不會是主角,不會被美女喜歡,而你正在做類似的事情。

『貳』 經典怎樣通過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";
}
?>

上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。

『叄』 php實現多文件上傳

<!doctypehtml>
<html>
<head>
<metacharset="utf-8">
<title>無標題文檔</title>
</head>
<body>
<formaction="?up=1"method="post"enctype="multipart/form-data"name="form1">
<inputtype="file"name="file[]">
<br>
<inputtype="file"name="file[]"id="fileField2">
<br>
<inputtype="file"name="file[]"id="fileField3">
<br>
<inputtype="submit"name="button"id="button"value="全部上傳">
</form>
</body>
</html>
<?php

if(!empty($_GET['up'])){

is_dir('fileupload')ormkdir('fileupload');//如果上傳目錄不存在則建立

$F=$_FILES['file'];//取得上傳域數組

$N=sizeof($F);//取得上傳個數

for($i=0;$i<$N;$i++){//循環處理

if($F['error'][$i]){//如果上傳錯誤

break;//跳出循環

}

if(!in_array($F['type'][$i],array('image/jpg','image/png','image/gif','image/jpeg'))){//如果文件格式不對

break;//跳出循環

};

if(ceil($F['size'][$i]/1024)>100){//如果文件過大

break;//跳出循環

}

move_uploaded_file($F['tmp_name'][$i],'fileupload/'.$F['name'][$i]);//保存上傳的文件

}

}

?>

『肆』 求PHP網頁上傳文件代碼.

自定義文件上傳函數


<?php
/**
* 文件上傳
*/
/**
* 文件上傳函數
* @param $name string 表單上傳框的name值
* @param $file_arr array 上傳文件的類型限制
* @param $filesize int 上傳文件限制其大小
* @param $path string 文件的保存路徑
* @return string 成功返回 "上傳成功及文件名"
*/
function uploads($name,$file_arr=array('jpg','png','gif','JPG','GIF','PNG'),$filesize=3145728,$path='uploads'){
//1、檢測文件的錯誤信息,如果是0 就允許上傳(保存)
$err=$_FILES[$name]['error'];
if($err>0){
if($err==1){
return '上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。';
}elseif($err==2){
return '上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。 ';
}elseif($err==3){
return '文件只有部分被上傳。';
}elseif($err==4){
return'沒有文件上傳';
}elseif($err>=5){
return '其他錯誤';
}
}
//2、檢測文件的類型,是否是我們需要的(png、gif、jpg)
$pre=pathinfo($_FILES[$name]['name'],PATHINFO_EXTENSION);
if(!in_array($pre,$file_arr)){
return '上傳的文件類型不符';
}
//3、檢測文件大小
if($_FILES[$name]['size']>$filesize){
return '上傳的文件太大';
}
//4、保存文件
$file_name=date('YmdHis',time()).mt_rand(1000,9999).'.'.$pre;
if(is_uploaded_file($_FILES[$name]['tmp_name'])){
move_uploaded_file($_FILES[$name]['tmp_name'], $path."/".$file_name);
return '上傳成功|'.$file_name;
}else{
return "文件上傳失敗!";
}

}
?>

『伍』 如何用php實現上傳excel

第一,在前台html頁面進行上傳文件:如:
復制代碼代碼如下:

<form method="post" action="php文件"enctype="multipart/form-data">
<h3>導入Excel表:</h3><input type="file" name="file_stu" />
<input type="submit" value="導入"/>
</form>

第二,在對應的php文件進行文件的處理
復制代碼代碼如下:

if (! empty ( $_FILES ['file_stu'] ['name'] ))
{
$tmp_file = $_FILES ['file_stu'] ['tmp_name'];
$file_types = explode ( ".", $_FILES ['file_stu']['name'] );
$file_type = $file_types [count ( $file_types ) - 1];
/*判別是不是.xls文件,判別是不是excel文件*/
if (strtolower ( $file_type ) !="xls")
{
$this->error ( '不是Excel文件,重新上傳' );
}
/*設置上傳路徑*/
$savePath = SITE_PATH . '/public/upfile/Excel/';
/*以時間來命名上傳的文件*/
$str = date ( 'Ymdhis' );
$file_name = $str . "." . $file_type;
/*是否上傳成功*/
if (! ( $tmp_file, $savePath . $file_name ))
{
$this->error ( '上傳失敗' );
}
/*
*對上傳的Excel數據進行處理生成編程數據,這個函數會在下面第三步的ExcelToArray類中
注意:這里調用執行了第三步類裡面的read函數,把Excel轉化為數組並返回給$res,再進行資料庫寫入
*/
$res = Service ( 'ExcelToArray' )->read ( $savePath . $file_name );
/*
重要代碼解決Thinkphp M、D方法不能調用的問題
如果在thinkphp中遇到M 、D方法失效時就加入下面一句代碼
*/
//spl_autoload_register ( array ('Think', 'autoload' ) );
/*對生成的數組進行資料庫的寫入*/
foreach ( $res as $k => $v )
{
if ($k != 0)
{
$data ['uid'] = $v[0];
$data ['password']= sha1 ( '111111' );
$data ['email'] =$v [1];
$data ['uname'] = $v [3];
$data ['institute'] = $v [4];
$result = M ( 'user' )->add( $data );
if (! $result)
{
$this->error ( '導入資料庫失敗' );
}
}
}
}

第三:ExcelToArrary類,用來引用phpExcel並處理Excel數據的
復制代碼代碼如下:

class ExcelToArrary extends Service{
public function __construct() {
/*導入phpExcel核心類 注意:你的路徑跟我不一樣就不能直接復制*/
include_once('./Excel/PHPExcel.php');
}
/**
* 讀取excel $filename 路徑文件名$encode 返回數據的編碼默認為utf8
*以下基本都不要修改
*/
public function read($filename,$encode='utf-8'){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow =$objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex;$col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
return $excelData;
}
}

『陸』 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如何實現文件上傳

所謂上傳就是把文件從你電腦本地復制到你的項目指定文件夾下。
但這有個中間過程,就是復制到系統指定的臨時文件夾生成臨時文件。
然後將臨時文件復制到你指定的文件夾下。
剩下的就是各種驗證了。
給你個圖片上傳方法
//上傳一張圖片
$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涓璮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父鐨勪嬌鐢ㄣ

閱讀全文

與php自動上傳文件相關的資料

熱點內容
哈利波特版本 瀏覽:663
如何從多行列中返回第一列數據 瀏覽:579
一個t的文件能有多少照片 瀏覽:174
安卓qq文件在哪個文件夾里 瀏覽:729
放圖片的文件夾什麼格式 瀏覽:213
win10esp精簡版 瀏覽:865
文件名1688quick 瀏覽:927
del文件是哪個資料庫的 瀏覽:901
java將字元串轉換為整型 瀏覽:175
win7批量修改部分文件名 瀏覽:873
win8需要升級到win10么 瀏覽:85
大數據在海關的運用 瀏覽:38
android使用javamail 瀏覽:3
win10快速訪問共享文件 瀏覽:259
喜馬拉雅電腦文件導出 瀏覽:615
js取商運算 瀏覽:719
幼兒編程貓是什麼 瀏覽:347
dnf哪個網站補丁 瀏覽:646
iphone自動關機能打通 瀏覽:794
怎麼連接伺服器資料庫 瀏覽:907

友情鏈接