欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

基于PHP的AJAX技術實現文件異步上傳_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:新手入門:初學動態網頁PHP的18個例子
如何創建我們的第一個PHP頁面呢?非常簡單的!選擇我們使用的一個最好的設計工具,當然你也可以 只使用記事本。創建之后記得要保存為擴展名為PHP的文件,然后傳到我們的服務器上。 在編寫PHP

異步的文件上傳是在現代的AJAX實現的Web應用里面經常要遇到,必須解決的問題。但是標準的AJAX類(XMLHttpRequest)無法實現傳輸文件的功能。因此,這里討論的內容就是如何在AJAX的技術的基礎之上構建異步的文件上傳功能。在這個功能當中需要使用到內置的框及(IFRAME)來傳輸文件。這個功能實現的效果是頁面在上傳文件的時候,用戶還可以使用該頁面并且填寫文件描述。

這個例子是我們引用AJAX的經典案例進行分析的。

系統環境

· 較新版本的瀏覽器。例如Opera,Firefox或者 Internet Explorer。

· PHP 4.3.0 或更高版本

· PHP 5 版本

· PHP 中的 'short_open_tag' 選項開啟(否則會發生解析錯誤)。

功能分析

通過內置的IFRAME(框架)進行文件上傳。具備包括三個部分組成。

· 在頁面中間有一個簡單的<form...表單,表單只包含了<input type="file" ... >控件。這個表單的目標鏈接就是一個隱藏得IFRAME(通過 CSS的風格" display: none;"實現)并且表單里面唯一一個控件的OnChange事件用來觸發JavaScript函數。這個函數的作用是檢查用戶提交的擴展名,然后提交表單。

· 在服務器端用PHP編寫了一個處理過程(用FILEFRAME坐注釋了)。這個處理過程用來把從客戶端上傳的文件進行檢查后保存在服務器,并且通過javascript代碼的形式返回給用戶。返回給用戶的Javascript腳本通過"parent.window.document"更改了用戶現在正在查看的頁面,設置了文件的名稱并啟用了讓用戶提交表單的按鈕。啟用按鈕的操作是通過getElementById函數實現的。

· 在主頁面還有一個表單,它包含了用戶提交的描述和隱藏的文件名。用戶可以在文件上傳的同時填寫文件的描述。當文件上傳結束以后,用戶點擊按鈕,就可以看上傳以后返回給用戶的文件信息了。(通過返回來的文件名和用戶輸入的描述構成文件信息)。

可能你會說這么操作不符合常理:文件在用戶確認之前就已經被提交了。如果用戶沒有提交的話,情況會如何呢。你可以自己在擴展處理被用戶放棄的文件。

這個例子把文件存儲在一個文件系統的目錄下。你需要在腳本開始運行的時候配置下這個目錄,具體的包含這個目錄信息的變量是$upload_dir 和$web_upload_dir。這里有一個對目錄是否可寫的權限檢查。

這里我們用到了以下幾個PHP函數:

· move_uploaded_file - 轉移一經上傳到服務器的文件

· fopen - 打開文件

· fwrite - 把內容寫入文件

· fclose - 關閉文件

· str_replace - 替換字符串

· filesize - 返回文件大小

· filemtime - 返回處理時間

你可以通過手冊查到這些函數如果使用。請注意要把HTM(<, >, &)標記替換為(<, > 和 &)。

源代碼

以下為引用的內容:

<?PHP
$upload_dir = "/var/www/anyexample/aeu"; // 文件存儲的路徑
$web_upload_dir = "/aeu"; // 文件在Web目錄下的路徑
$tf = $upload_dir.'/'.md5(rand()).".test";
$f = @fopen($tf, "w");
if ($f == false)
die("Fatal error! {$upload_dir} is not writable. Set 'chmod 777 {$upload_dir}'
or something like this");
fclose($f);
unlink($tf);

//處理上傳的文件
if (isset($_POST['fileframe']))
{
 $result = 'ERROR';
 $result_msg = 'No FILE field found';

 if (isset($_FILES['file'])) // 從瀏覽器接受文件
 {
  if ($_FILES['file']['error'] == UPLOAD_ERR_OK) // 沒有錯誤
  {
   $filename = $_FILES['file']['name']; // 文件名
   move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$filename);
   // 處理的主過程-轉移文件到 $upload_dir
   $result = 'OK';
  }
  elseif ($_FILES['file']['error'] == UPLOAD_ERR_INI_SIZE)
   $result_msg = 'The uploaded file exceeds the upload_max_filesize directive in PHP.ini';
  else
   $result_msg = 'Unknown error';
 }

 echo '<html><head><title>-</title></head><body>';
 echo '<script language="javascript" type="text/Javascript">'."\n";
 echo 'var parDoc = window.parent.document;';
 '
 if ($result == 'OK')
 {
  echo 'parDoc.getElementById("upload_status").value = "file successfully uploaded";';
  echo 'parDoc.getElementById("filename").value = "'.$filename.'";';
  echo 'parDoc.getElementById("filenamei").value = "'.$filename.'";';
  echo 'parDoc.getElementById("upload_button").disabled = false;';
 }
 else
 {
  echo 'parDoc.getElementById("upload_status").value = "ERROR: '.$result_msg.'";';
 }

 echo "\n".'</script></body></html>';
 exit();
}

function safehtml($s)
{
 $s=str_replace("&", "&", $s);
 $s=str_replace("<", "<", $s);
 $s=str_replace(">", ">", $s);
 $s=str_replace("'", "'", $s);
 $s=str_replace("\"", """, $s);
 return $s;
}

if (isset($_POST['description']))
{
 $filename = $_POST['filename'];
 $size = filesize($upload_dir.'/'.$filename);
 $date = date('r', filemtime($upload_dir.'/'.$filename));
 $description = safehtml($_POST['description']);

 $html =<<<END
 <html><head><title>{$filename} [uploaded by IFRAME Async file uploader]</title></head>
 <body>
  <h1>{$filename}</h1>
  <p>This is a file information page for your uploaded file. Bookmark it, or send to anyone...</p>
  <p>Date: {$date}</p>
  <p>Size: {$size} bytes</p>
  <p>Description:
  <pre>{$description}</pre>
  </p>
  <p><a href="{$web_upload_dir}/{$filename}" style="font-size: large;">download file</a><br>
  <a href="{$PHP_SELF}" style="font-size: small;">back to file uploading</a><br>
  <a href="{$web_upload_dir}/upload-log.html" style="font-size: small;">upload-log</a></p>
  <br><br>Example by <a href="http://www.anyexample.com/">AnyExample</a>
 </body></html>
 END;
 
 $f = fopen($upload_dir.'/'.$filename.'-desc.html', "w");
 fwrite($f, $html);
 fclose($f);
 $msg = "File {$filename} uploaded,
 <a href='{$web_upload_dir}/{$filename}-desc.html'>see file information page</a>";

 $f = fopen($upload_dir."/upload-log.html", "a");
 fwrite($f, "<p>$msg</p>\n");
 fclose($f);

 setcookie('msg', $msg);
 header("Location: http://".$_SERVER['HTTP_HOST'].$PHP_SELF);
 exit();
}

if (isset($_COOKIE['msg']) && $_COOKIE['msg'] != '')
{
 if (get_magic_quotes_gpc())
  $msg = stripslashes($_COOKIE['msg']);
 else
  $msg = $_COOKIE['msg'];
  setcookie('msg', '');
}
?>
<!-- Beginning of main page -->
<html><head>
<title>IFRAME Async file uploader example</title>
</head>
<body>
<?PHP
 if (isset($msg))
  echo '<p style="font-weight: bold;">'.$msg.'</p>';
?>
<h1>Upload file:</h1>
<p>File will begin to upload just after selection. </p>
<p>You may write file description, while you file is being uploaded.</p>

<form action="<?=$PHP_SELF?>" target="upload_iframe" method="post" enctype="multipart/form-data">
 <input type="hidden" name="fileframe" value="true">
 <!-- Target of the form is set to hidden iframe -->
 <!-- From will send its post data to fileframe section of this PHP script (see above) -->

 <label for="file">text file uploader:</label><br>
 <!-- JavaScript is called by OnChange attribute -->
 <input type="file" name="file" id="file" onChange="jsUpload(this)">
</form>
<script type="text/Javascript">
/* This function is called when user selects file in file dialog */
function jsUpload(upload_field)
{
 // this is just an example of checking file extensions
 // if you do not need extension checking, remove
 // everything down to line
 // upload_field.form.submit();
 
 var re_text = /\.txt|\.XML|\.zip/i;
 var filename = upload_field.value;

 /* Checking file type */
 if (filename.search(re_text) == -1)
 {
  alert("File does not have text(txt, XML, zip) extension");
  upload_field.form.reset();
  return false;
 }

 upload_field.form.submit();
 document.getElementById('upload_status').value = "uploading file...";
 upload_field.disabled = true;
 return true;
}
</script>
<iframe name="upload_iframe" style="width: 400px; height: 100px; display: none;">
</iframe>
<!-- For debugging purposes, it's often useful to remove
"display: none" from style="" attribute -->

<br>
Upload status:<br>
<input type="text" name="upload_status" id="upload_status"
value="not uploaded" size="64" disabled>
<br><br>

File name:<br>
<input type="text" name="filenamei" id="filenamei" value="none" disabled>

<form action="<?=$PHP_SELF?>" method="POST">
 <!-- one field is "disabled" for displaying-only. Other, hidden one is for sending data -->
 <input type="hidden" name="filename" id="filename">
 <br><br>

 <label for="photo">File description:</label><br>
 <textarea rows="5" cols="50" name="description"></textarea>

 <br><br>
 <input type="submit" id="upload_button" value="save file" disabled>
</form>
<br><br>
<a href="<?=$web_upload_dir?>/upload-log.html">upload-log</a>
<br><br><br>

Example by <a href="http://www.anyexample.com/">AnyExample</a>
</body>
</html>

以上的講解就是提供一種思路供大家參考。大家也可以根據自己的需求進行相應的優化。

分享:新手入門:IIS6環境下的PHP最佳配置方法
雖然 LAMP 組合很不錯,但是如果想要架設一臺同時支持PHP、ASP、ASP.NET、JSP、Perl的Web虛擬主機服務器,還是用 Windows 2003的IIS 6最好。網上有很多介紹在IIS 6上配置PHP的文章,但是那些方

來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關PHP教程
亚洲aa中文字幕| 色欧美乱欧美15图片| 久久躁日日躁aaaaxxxx| 日韩在线视频在线| 久久久精品国产sm调教网站| 日韩高清一级| 国产精品免费网站在线观看| 欧美日韩成人网| 男人插女人视频在线观看| 黄瓜视频在线免费观看| 91精品一区二区三区综合| 亚洲国产视频一区| 国产精品久久久久免费a∨| 深夜福利网站在线观看| 国产精品久久久久av电视剧| 激情五月播播久久久精品| 欧美精品一区二区在线播放| 日韩精品久久久免费观看| 精品无码久久久久成人漫画| 日韩成人午夜| 中文av字幕一区| 久久久久免费视频| 狠狠热免费视频| 蜜臀av免费在线观看| 日韩av一二三| 亚洲成人久久久| 致1999电视剧免费观看策驰影院| 日韩经典在线观看| 亚洲成av人电影| 日韩欧美一区视频| 97人人模人人爽人人喊38tv| 日本精品久久久久中文| 欧美一级一片| 亚洲一级二级在线| 成人有码视频在线播放| 国产精品毛片一区二区| 风间由美性色一区二区三区四区 | 国产精品亚洲不卡a| 内射毛片内射国产夫妻| 欧洲亚洲一区二区三区| 亚洲午夜日本在线观看| 成人福利视频在线观看| 波多野在线播放| 日韩成人av在线资源| 亚洲最快最全在线视频| 国产欧美精品一区二区三区-老狼| avtt香蕉久久| 欧洲vs亚洲vs国产| 亚洲第一福利视频在线| 超碰97网站| 手机在线免费看片| 国产精品久久久久9999赢消| 欧美午夜电影网| 欧美日韩一区综合| 日本久久综合网| 久久精品动漫| 亚洲第一精品福利| 青青草精品视频在线| 欧美视频一二区| av中文字幕在线不卡| 久久久久国产精品免费网站| 亚洲av综合色区无码另类小说| 国产一区二区三区黄网站| 亚洲视频 欧洲视频| 成人淫片在线看| 久久久久久久久毛片| 欧美va天堂在线| 欧美日韩视频在线第一区| 亚洲国产精品综合| 91精品国自产| 国产精品小仙女| 久久久久女教师免费一区| 国产又黄又嫩又滑又白| 成人午夜三级| 午夜欧美视频在线观看| 国产综合欧美在线看| 欧美日韩乱国产| 久久影院亚洲| 色偷偷88888欧美精品久久久| 黄色手机在线视频| 国产精品日本一区二区三区在线 | 91麻豆精品久久毛片一级| 国产精品x453.com| 日韩欧美aaaaaa| 亚洲熟妇国产熟妇肥婆| 国产精品亚洲一区二区三区在线观看| 国产日韩精品久久久| 91久久久久久久久久久| 精品少妇一二三区| 丝袜a∨在线一区二区三区不卡| 在线观看国产成人av片| 小早川怜子一区二区三区| 91大神精品| 五月天久久比比资源色| 日韩精品一区二区三区四区五区 | 综合色一区二区| 亚洲国产日韩一区| 久久婷五月综合| 北条麻妃一区二区三区在线| 日本久久一区二区| 浴室偷拍美女洗澡456在线| 性感美女福利视频| 亚洲视频一区在线观看| 欧美极品一区二区| av一级黄色片| 国产日韩v精品一区二区| 99久久综合狠狠综合久久止| 无码视频一区二区三区| 国产成人免费视频网站| 国产精品偷伦视频免费观看国产| 欧美成人片在线观看| 天堂资源在线中文精品| 欧美另类交人妖| 男人舔女人下部高潮全视频| 欧美永久精品| 中文字幕国产精品久久| 日韩av手机在线播放| 天天综合网91| 国产一区二区三区免费视频| 女性生殖扒开酷刑vk| 波多野结衣一区| 日韩二区三区在线| www.色.com| 日韩在线二区| 亚洲精品一区二区三区不| gogo亚洲国模私拍人体| 久久精品播放| 亚洲小视频在线观看| 中文字幕人妻熟女在线| 一区二区三区四区在线观看国产日韩| 精品亚洲男同gayvideo网站| 色诱av手机版| 亚洲精品网址| 最近2019中文免费高清视频观看www99| theav精尽人亡av| 在线不卡亚洲| 久久91亚洲人成电影网站| 秋霞网一区二区三区| 老妇喷水一区二区三区| 91sa在线看| 97久久久久久| 91视频88av| 黄色大全在线观看| 91啪亚洲精品| 国产视频一区二区不卡| 精品国产区一区二| 亚洲麻豆国产自偷在线| 正在播放国产精品| 亚洲国产91视频| 欧美日韩成人一区二区| 一区二区三区入口| 欧美色图在线播放| 亚洲一区av在线播放| 欧美图片一区二区| 性欧美精品高清| 97婷婷涩涩精品一区| 国产亚洲精品久久久久久无几年桃| 国产精品综合视频| 亚洲影影院av| 国产黄色高清视频| 亚洲午夜久久久久久久久久久| www.欧美黄色| 精品亚洲精品| 亚洲欧美成人在线| 精品无码国产污污污免费网站| 日韩高清一区在线| 国产在线精品播放| 国产又爽又黄免费软件| 洋洋av久久久久久久一区| 免费看欧美一级片| 思热99re视热频这里只精品| 日韩电影中文字幕av| 美女爆乳18禁www久久久久久| 日韩av一级片| 成人动漫网站在线观看| 亚洲av无码片一区二区三区| 亚洲午夜精品在线| 激情六月丁香婷婷| 四虎成人av| 欧美激情xxxx| 九九九在线观看| 国产精品久久久久久久久免费桃花| 中文字幕久久一区| 开心激情综合| 这里只有精品在线播放| 欧美偷拍第一页| 99久久国产免费看| 亚洲巨乳在线观看| 99久久免费精品国产72精品九九| 亚洲欧美另类自拍| 日韩av手机在线免费观看| 成人精品免费网站| 色一情一乱一伦一区二区三欧美| 免费欧美网站| 日韩精品免费在线播放| 色www亚洲国产阿娇yao| 国产精品伊人色| 久热这里只精品99re8久| 另类一区二区| 亚洲精品久久久久国产| 青青青视频在线播放| 成人爱爱电影网址| 亚洲精品成人a8198a| 成人涩涩网站| 日韩一区二区三区国产| 国产精品成人aaaa在线| 亚洲国产经典视频| 欧美成人免费在线观看视频| 色一区二区三区四区| 久久久久女教师免费一区| 中文字幕+乱码+中文| 午夜电影网一区| 不用播放器的免费av| 国产一区二区三区的电影 | 91精品国模一区二区三区| 亚洲av人人澡人人爽人人夜夜| 久久精品免费观看| 久久综合九色99| 亚洲精品在线播放| 日韩在线视频一区| 欧美日韩a v| 香蕉加勒比综合久久| 亚洲 激情 在线| 日韩电影在线一区二区| 国内一区在线| 深夜激情久久| 久久精品国产视频| 国产精品露脸视频| 日韩欧美在线国产| 成年人小视频在线观看| 国产麻豆日韩欧美久久| 亚洲午夜久久久影院伊人| 国产91精品对白在线播放| 久久人91精品久久久久久不卡| 136福利视频导航| 欧美视频日韩视频在线观看| 少妇真人直播免费视频| 成人av手机在线观看| 免费在线精品视频| 五月婷婷六月综合| 国产日韩欧美一二三区| 51一区二区三区| 亚洲图片在线综合| 日本视频免费观看| 色综合天天综合狠狠| jizz日本免费| 91网站在线观看视频| 国产3p露脸普通话对白| 精品成人国产| 国产一区自拍视频| 日韩av午夜| 欧洲一区二区视频| 美女福利一区二区三区| 日韩精品高清在线| 欧美日韩乱国产| 91久久精品一区二区三区| 白丝女仆被免费网站| 久久人人超碰精品| 亚洲狼人综合干| 蜜臀国产一区二区三区在线播放 | 国产一级片一区二区| 在线看一区二区| 精品人妻中文无码av在线| 国产清纯在线一区二区www| 久久精品免费网站| 精品一区二区三区欧美| 黄色一级视频播放| 亚洲网站视频| 久久综合久久久| 欧洲美女日日| 91久久久国产精品| 中文字幕一区日韩精品| 97国产一区二区精品久久呦| 成人勉费视频| 日韩在线小视频| 精品二区在线观看| 精品捆绑美女sm三区 | 在线观看不卡| 麻豆精品传媒视频| 日韩在线视频精品| 成人av电影免费| 亚洲精品aaaaa| 国产日韩亚洲欧美| 国产精品超碰| 国产精品va在线播放| 久久国产精品免费一区二区三区| 久久久久久97| jizz亚洲女人高潮大叫| 免费不卡在线观看av| 成人羞羞国产免费图片| 色一情一乱一区二区| www.色婷婷.com| 国产一区二区三区视频| 精品国产无码一区二区| 国产一区二区日韩精品欧美精品| 99国产在线播放| 亚洲欧美日韩天堂| 午夜精品久久久久久久96蜜桃 | 任我爽在线视频| 欧美日韩国产一区中文午夜| 欧洲美熟女乱又伦| 一区二区高清在线| 日韩不卡av在线| 婷婷六月综合亚洲| 亚洲色偷偷综合亚洲av伊人| 欧美色欧美亚洲高清在线视频| 国产乱子轮xxx农村| 欧美日韩一区二区免费视频| www深夜成人a√在线| 欧美性xxxx极品高清hd直播| 小泽玛利亚一区二区免费| 色综合久久综合| 国产亚洲欧美久久久久| 欧美精品久久99久久在免费线| 探花视频在线观看| 亚洲精品在线免费播放| 97精品人妻一区二区三区在线| 亚洲欧美变态国产另类| 好吊视频一区二区三区| 久久九九有精品国产23| 91综合国产| 欧美亚洲第一页| 6080成人| 成人黄在线观看| 波多野结衣在线观看一区二区三区| 国外成人免费视频| 午夜欧美精品| 亚洲免费久久| 日日夜夜免费精品视频| 欧美亚洲一二三区| 成人黄色综合网站| 亚洲av无一区二区三区久久| 日韩理论片网站| 日本一道本视频| 欧美午夜精品一区二区蜜桃| 欧美日韩一二三四区| 日韩av在线精品| 无码国产色欲xxxx视频| 久久久免费av| 日本亚洲视频| 亚洲mm色国产网站| 亚洲精品国产成人影院| 超碰在线免费观看97| 久久精品久久99精品久久| xxxx一级片| 中国色在线观看另类| 日本美女bbw| 欧美浪妇xxxx高跟鞋交| 亚洲手机在线观看| 久久久99免费视频| 精品中文字幕一区二区三区四区| 91网站免费看| 欧美日韩hd| 成年女人18级毛片毛片免费| 大尺度一区二区| 私密视频在线观看| 日韩欧美中文在线| 久久久久久无码午夜精品直播| 一区国产精品视频| 青青青国产精品| 91美女片黄在线观| 欧美国产先锋| 成年女人18级毛片毛片免费| 99视频有精品| 国产手机在线观看| 欧美日韩成人综合| 国产福利资源在线| 98精品在线视频| 国产免费播放一区二区| 亚洲激情啪啪| 国产成人精品一区二| 自拍视频一区二区| 欧美日韩一区精品| 国产特级aaaaaa大片| 国模精品视频一区二区三区| 国产成人精品一区二区免费看京| 午夜老司机精品| 国产传媒日韩欧美成人| 日本japanese极品少妇| 欧美亚洲一区二区在线| 精品人妻午夜一区二区三区四区| 97精品国产97久久久久久免费| 国产一区二区在线| 成人免费看片视频在线观看| eeuss国产一区二区三区| 国产精品av久久久久久无| 日韩一区二区三区四区五区六区 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲精选中文字幕| 日韩福利在线观看| 国产私拍一区| 麻豆一区二区99久久久久| 国产高潮视频在线观看| 欧美性感一区二区三区| 性猛交富婆╳xxx乱大交天津| 国产www精品| 国产一区美女| www.精品在线| 精品久久久久久久久久国产| 一级黄色片免费|