精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Zend框架實(shí)現(xiàn)PHP文件上傳

開發(fā) 后端
本文將向讀者詳細(xì)介紹如何使用流行的Zend框架來創(chuàng)建我們自己的文件上傳機(jī)制,該機(jī)制能夠輕而易舉地接收、確認(rèn)和處理要上傳的文件。

Zend Framework是流行的PHP開發(fā)框架,使用Zend框架,能夠方便快捷的實(shí)現(xiàn)各項(xiàng)常用功能。這里向你介紹使用Zend框架來創(chuàng)建文件上傳功能,該機(jī)制能夠輕而易舉地接收、確認(rèn)和處理要上傳的文件。

一、簡介

無論是管理YouTube上的視頻、在SlideShare上共享PowerPoint演示文稿,還是使用開源電子商務(wù)平臺Magento更新在線商店中的商品圖像,我們都有用到基于web的文件上傳功能。但是,這個功能到底是如何工作的呢?文件是如何從本地機(jī)器傳送到遠(yuǎn)程服務(wù)器的?本文將向讀者詳細(xì)介紹如何使用流行的Zend框架來創(chuàng)建我們自己的PHP文件上傳機(jī)制,該機(jī)制能夠輕而易舉地接收、確認(rèn)和處理要上傳的文件。

二、配置處理文件上載的PHP

PHP本身能夠通過Web表單來完成文件上載,不過無論使用標(biāo)準(zhǔn)PHP代碼還是使用Zend框架來管理文件上傳,都有必要花一些時間來檢測直接影響PHP的有關(guān)功能的配置偽指令,這些指令包括:

◆file_uploads:這個偽指令啟用PHP的文件上載功能。在默認(rèn)情形下,這個偽指令會被啟用。
◆upload_max_filesize:這個偽指令定義了要上載的文件的最大尺寸。在默認(rèn)情形下,這個偽指令被設(shè)置為2M。
◆upload_tmp_dir:這個偽指令定義了PHP臨時存儲要上傳的文件的目錄,文件在傳入最終目的地之前將臨時存放于此,該目錄是由開發(fā)人員指定的。在默認(rèn)情形下,這個偽指令不會賦值,這意味著PHP將使用系統(tǒng)的默認(rèn)值,舉例來說,許多l(xiāng)inux發(fā)行版中的臨時目錄為/tmp。
◆post_max_size:設(shè)定POST 數(shù)據(jù)所允許的最大大小。php默認(rèn)的post_max_size 為2M。
◆max_execution_time:雖然與文件上載的關(guān)系不是非常密切,但是這個偽指令在PHP的文件上載功能中卻扮演了一個重要角色,因?yàn)樗x了PHP腳本的執(zhí)行時間。對于尺寸特別大的文件來說,可能需要很長的時間才能傳輸?shù)轿募?wù)器,所以可以考慮將這個偽指令的默認(rèn)值即30秒改為60乃至90秒。

三、創(chuàng)建文件上載表單

下面我們將創(chuàng)建一個Web表單示例,它能夠用來瀏覽本地計(jì)算機(jī)的文件系統(tǒng)以及確定要上傳的文件。我們將盡力使該示例保持簡單,創(chuàng)建的文件上載表單的外觀如圖1所示。

PHP文件上傳表單

這個表單的創(chuàng)建方式跟我們之前創(chuàng)建的其他表單大同小異,只是有一些輕微的區(qū)別。用于創(chuàng)建這個表單的HTML代碼如清單1所示。按照Zend框架的慣例,我們將這個表單放入名為upload.phtml的視圖中,它是名為admin的控制器中動作upload的一部分。

  1. <form enctype="multipart/form-data" method="post" action="/admin/upload"> 
  2.     
  3.     <p> 
  4.       What file would you like to upload?<br /> 
  5.       <input type="file" name="video-upload" size="40" /> 
  6.     p> 
  7.     
  8.     <p> 
  9.       <input type="submit" name="submit" class="submit" value="Upload Video" /> 
  10.     p> 
  11.     
  12.   form> 

在這個表單中,有兩處代碼需要格外注意:

enctype="multipart/form-data":當(dāng)我們使用Web表單發(fā)送大量的二進(jìn)制數(shù)據(jù)的時候,就應(yīng)該使用這個表單屬性。因?yàn)橹T如電子表格以及視頻等文件中含有大量的二進(jìn)制數(shù)據(jù),所以創(chuàng)建文件上載表單時應(yīng)該包含這個屬性。

  1. <input type="file" name="video-upload" size="40" /> 

#T#上面這個表單元素會創(chuàng)建允許用戶在本地文件系統(tǒng)搜索要上傳的文件的表單機(jī)制。當(dāng)提交按鈕被按下的時候,這個文件將被上傳,并將其發(fā)送給表單動作所標(biāo)識的腳本(本例中,為upload.php)做進(jìn)一步的處理。

如上所述,文件將被上傳給表單的動作屬性所標(biāo)識的腳本。然而,除非該腳本對該文件做實(shí)際的處理,否則數(shù)據(jù)會被丟失。在下一節(jié)中,我們將介紹如何使用Zend框架的Zend_File_Transfer組件來處理上傳的文件。#p#

四、關(guān)于Zend_File_Transfer組件

如同Zend框架的其他強(qiáng)大組件旨在簡化我們的開發(fā)任務(wù)那樣,Zend_File_Transfer組件旨在簡化從用戶的計(jì)算機(jī)向web服務(wù)器上傳文件的工作。實(shí)際上,這個組件在處理文件上傳方面非常靈活,它可以使用諸如FTP和WebDAV協(xié)議來傳送文件,不過我們這里只討論它的最初設(shè)計(jì)意圖。讓我們首先創(chuàng)建最簡單上載動作處理,不過它仍能接收和處理一個上載的文件,如下所示:

  1. public function uploadAction()  
  2.    {  
  3.      
  4.      if ($this->getRequest()->isPost()) {  
  5.       
  6.        $upload = new Zend_File_Transfer_Adapter_Http();  
  7.         
  8.        $upload->setDestination($this->config->uploads->product->supplements);  
  9.             
  10.        if ($upload->receive()) {   
  11.          echo "The file has been uploaded!";  
  12.        }  
  13.             
  14.      }  
  15.        
  16.    } 

為了在下面的描述中輕松引用代碼,我們這里為動作代碼添加了相應(yīng)的行號。

04行的代碼確定POST請求是否已經(jīng)提交給了該動作。這對于創(chuàng)建為用戶呈現(xiàn)表單以及通過表單提交數(shù)據(jù)的動作來說都非常有用。

06行的代碼調(diào)用Zend_File_Transfer類組件,并使用了能夠處理通過Web表單提交的數(shù)據(jù)的HTTP適配器。

08行的代碼用于設(shè)置文件上傳的最終目的地。雖然可以直接向該方法傳遞一個路徑,不過我發(fā)現(xiàn)將路徑存放到application.ini文件中然后根據(jù)需要檢索配置參數(shù)會更加方便一些。 這允許我們依照要求輕松更改目的地路徑,當(dāng)我們的代碼從開發(fā)工作站遷移到生產(chǎn)服務(wù)器時這一點(diǎn)格外有用。

10行的代碼負(fù)責(zé)接收文件,并將其移動到要求的目的地。

或許您覺得這難以置信,但是這短短的十六行代碼的確能夠接收并將上傳來的文件移動到服務(wù)器的預(yù)定位置! 然而,現(xiàn)在還不要高興得太早,因?yàn)樵撃_本缺少接收用戶輸入時應(yīng)具備的一個關(guān)鍵步驟,因?yàn)檫@個腳本允許用戶上傳任意文件,這是萬萬不可的! 幸運(yùn)的是,Zend_File_Transfer組件帶有檢查文件上傳處理方面能夠想到的所有方面的數(shù)據(jù)驗(yàn)證方法。

五、對上載的文件進(jìn)行檢驗(yàn)

我們至少希望檢查被上傳文件的一個或者幾個關(guān)鍵特性,如文件的大小,或者M(jìn)IME類型等。實(shí)際上,有多種方法可以用來檢索這些特性。舉例來說,為了檢索文件的MIME類型,我們可在接收文件之后調(diào)用getMimeType()方法,具體代碼如下所示:

  1. if ($upload->receive()) {  
  2.     echo "The file type is {$upload->getMimeType()}";   
  3.   } 

如果我們向服務(wù)器上傳了一個PDF文件,并調(diào)用了getMimeType方法,那么將會返回application/x-pdf。當(dāng)用戶只應(yīng)上傳特定類型的文件時,這個方法非常有用。下面是一個例子:

  1. if ($upload->getMimeType() == "application/x-pdf") {  
  2.     $upload->receive();  
  3.     echo "File received";  
  4.   } else {  
  5.     echo "Please upload a PDF";  
  6.   } 

當(dāng)然,檢查文件大小或者類型只是證實(shí)過程的一小部分而已。為了簡化驗(yàn)證工作,您可能希望在接收被上傳的文件之前來進(jìn)行這些工作,實(shí)際上Zend_File_Transfer組件已經(jīng)為我們提供了18個驗(yàn)證方法。Zend框架文檔提供了這些驗(yàn)證函數(shù)的完整說明。我們可能用到的驗(yàn)證函數(shù)之一便是ImageSize,它能檢查一個被上載圖像的大小,以便確保其大小介于給定的最大和最小尺寸之間。在某些情況下,這可能非常有用,例如在需要保持縮略圖尺寸保持一致的時候。下面的例子將確保所有上傳的圖像都為PNG類型,同時其大小符合160×160像素的要求:

  1. if ($this->getRequest()->isPost()) {  
  2.     
  3.     $upload = new Zend_File_Transfer_Adapter_Http();  
  4.     
  5.     $upload->setDestination($this->config->uploads->product->supplements);  
  6.     
  7.     $upload->addValidator('MimeType', false, 'image/png');  
  8.      
  9.     $upload->addValidator('ImageSize', false,  
  10.       array('minwidth' => 160,  
  11.         'maxwidth' => 160,  
  12.         'minheight' => 160,  
  13.         'maxheight' => 160)  
  14.       );  
  15.      
  16.     if ($upload->isValid()) {  
  17.      
  18.       $upload->receive();  
  19.       echo "File received";  
  20.     
  21.     } else {  
  22.      
  23.       echo "Please upload a file of type PNG and dimensions 160x160 pixels.";  
  24.       
  25.     }  
  26.     
  27.   } 

六、進(jìn)一步閱讀

如今,用戶驅(qū)動的內(nèi)容已經(jīng)成為Web的關(guān)鍵組成部分,所以項(xiàng)目的成功可能會取決于數(shù)據(jù)從用戶到web服務(wù)器的傳送效率。在為用戶提供數(shù)據(jù)上傳功能的時候,Zend框架的Zend_File_Transfer組件可以極大的降低開發(fā)工作的復(fù)雜性!

如果您想進(jìn)一步了解Zend_File_Transfer組件,請參考Zend框架的Zend_File組件文檔;另外,PHP手冊的文檔也有文件上載方面的介紹;此外,Zend_ProgressBar組件的進(jìn)一步信息請參考Zend框架的Zend_ProgressBar文檔。

責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-12-09 13:41:50

PHP Zend框架

2009-05-06 16:36:00

Zend FramewZend框架PHP

2009-12-09 13:47:49

PHP Zend框架模

2009-11-16 10:40:02

PHP上傳文件代碼

2009-12-09 13:54:42

PHP Zend加密文

2009-11-16 10:25:40

PHP上傳文件

2009-11-16 10:16:24

PHP文件上傳

2009-11-16 12:17:46

PHP上傳文件類型

2009-05-18 10:23:43

文件上傳PHPFILE函數(shù)

2009-11-16 14:15:51

PHP上傳多個文件

2009-11-16 13:57:21

PHP上傳文件

2013-05-27 10:14:21

PHPZend FramewPHP編碼

2009-11-16 14:09:30

PHP上傳類

2009-11-24 15:23:50

PHP文件上傳進(jìn)度條

2009-11-16 13:04:04

PHP上傳文件代碼

2009-11-16 11:41:19

PHP上傳大文件

2009-11-16 09:35:42

PHP上傳

2009-11-16 10:49:43

PHP上傳文件代碼

2017-03-01 20:08:36

PHP內(nèi)核分析

2009-12-09 13:32:08

PHP zend安裝
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

又爽又大又黄a级毛片在线视频| 日韩男人的天堂| 视频一区中文字幕精品| 亚洲va国产天堂va久久en| 久久riav| 91tv国产成人福利| 一区二区三区四区五区精品视频 | 午夜欧美不卡精品aaaaa| 超碰男人的天堂| 国内欧美日韩| 欧美色xxxx| 强开小嫩苞一区二区三区网站| 无码国产色欲xxxx视频| 久久99精品网久久| 欧洲日本亚洲国产区| 手机在线免费看毛片| 日韩高清电影免费| 日韩一区二区电影在线| 国产a级片免费观看| 丰满的护士2在线观看高清| 国产色综合一区| 国产欧美日韩伦理| 国产免费无遮挡| 男人的天堂亚洲| 欧美黄色三级网站| 九九精品视频免费| 欧美理论在线播放| 日韩精品视频在线免费观看| 爱情岛论坛亚洲自拍| 日本一区二区三区视频在线| 精品福利免费观看| 成人在线免费高清视频| 91吃瓜网在线观看| 国产亚洲欧美日韩俺去了| 国产私拍一区| www日本高清视频| 精东粉嫩av免费一区二区三区| 日本国产一区二区三区| 日韩大片免费在线观看| 国产精品v亚洲精品v日韩精品| 日韩在线视频观看| 久久久久亚洲AV成人无在| 日本一区福利在线| 亚洲精美色品网站| 中文成人无字幕乱码精品区| 久久伊人影院| 日韩欧美一卡二卡| 成年人性生活视频| 99精品国产一区二区三区2021 | 国模私拍视频在线| 国产伦精品一区二区三区视频青涩| 国产精品一区二区三区毛片淫片| 精品国产乱子伦| 丝袜美腿亚洲色图| 国产激情综合五月久久| 区一区二在线观看| 久久亚洲风情| 国产精品免费视频久久久| 中国黄色一级视频| 老司机免费视频一区二区| 国产精品尤物福利片在线观看| 一区二区视频播放| 九九视频精品免费| 91丨九色丨国产在线| av手机免费看| av在线一区二区三区| 精品在线一区| 国产玉足榨精视频在线观看| 国产精品污www在线观看| 美国av在线播放| 黄网av在线| 欧美午夜女人视频在线| 一级黄色香蕉视频| 99er精品视频| 精品福利二区三区| 亚洲熟妇无码av| 色小子综合网| 欧美日韩成人免费| 日本中文字幕在线| 美腿丝袜一区二区三区| 亚洲影影院av| 香蕉视频网站在线| 亚洲国产电影在线观看| 天堂а√在线中文在线| 国产精品xx| 欧美视频一二三区| 农村末发育av片一区二区| 亚洲精品小区久久久久久| 中文字幕久精品免费视频| 免费中文字幕视频| 久久综合图片| 亚洲专区在线视频| 男男激情在线| 亚洲女爱视频在线| 欧美牲交a欧美牲交aⅴ免费下载| 亚州精品国产| 亚洲精品美女在线观看| 日本不卡一二区| 国产精品一二| 亚洲xxxx视频| 国产www.大片在线| 亚洲午夜在线视频| 浓精h攵女乱爱av| 国产成人在线中文字幕| 俺去啦;欧美日韩| 日韩精品无码一区二区| 久久99在线观看| 茄子视频成人在线观看| 久草在线视频福利| 欧美三级韩国三级日本一级| 中国极品少妇xxxx| 久久久久国产精品| 国产大片精品免费永久看nba| 国产高中女学生第一次| 国产欧美一区二区精品性| 大西瓜av在线| 99久久99九九99九九九| 国产一区二区三区18| 五月天婷婷丁香| 国产在线国偷精品免费看| 日韩精品第一页| 精品众筹模特私拍视频| 欧美电影一区二区| 国产探花视频在线播放| 亚洲中午字幕| 国产伦精品一区二区三区视频孕妇| 免费黄网在线观看| 欧美日韩大陆一区二区| 中文字幕在线观看免费高清| 亚洲在线日韩| 精品在线一区| 欧美激情护士| 日韩精品一区二区三区第95| 精品在线视频免费| 国产精品18久久久久久久久| 最近中文字幕免费mv| 另类一区二区三区| 中文字幕亚洲天堂| 中文字幕有码无码人妻av蜜桃| 91亚洲永久精品| 国产午夜大地久久| 欧美黑人做爰爽爽爽| 久久久久久久久久久国产| 性色av蜜臀av| 亚洲一区二区视频| 香蕉视频污视频| 亚洲久色影视| 精品一区二区国产| 国产精品迅雷| 亚洲午夜精品久久久久久性色| 日日噜噜噜噜人人爽亚洲精品| 97se亚洲国产综合自在线观| 欧美日韩二三区| 欧美尿孔扩张虐视频| 97人洗澡人人免费公开视频碰碰碰| 成人精品在线播放| 欧美日韩在线另类| 国产美女免费无遮挡| 日韩二区三区在线观看| 亚洲欧美日本国产有色 | 亚洲视频久久| 精品国产一区二区三区免费| 手机在线观看av| 亚洲性生活视频在线观看| 日本妇乱大交xxxxx| 国产精品网站一区| 在线成人精品视频| 一区二区三区福利| 亚洲国产精品久久久久久女王| av亚洲一区| 欧美理论电影在线观看| 外国精品视频在线观看| 欧美亚洲日本国产| 国语对白在线播放| 91亚洲午夜精品久久久久久| 牛夜精品久久久久久久| 综合久久精品| 久久久精品国产一区二区三区| 成人看片在线观看| 久久综合久久美利坚合众国| 少妇精品高潮欲妇又嫩中文字幕 | 少妇一级淫免费放| 国产精品videosex极品| 欧美日韩电影一区二区三区| 亚洲成人毛片| 2020欧美日韩在线视频| 免费在线毛片网站| 亚洲精品福利视频| ,一级淫片a看免费| 精品电影在线观看| 一级片一级片一级片| 91小视频在线观看| 国内av一区二区| 国产精品久久久久久久免费软件 | 97caopor国产在线视频| 日韩电影免费在线观看中文字幕| 又色又爽又黄无遮挡的免费视频| 亚洲香蕉伊在人在线观| 欧美激情 一区| 不卡一区二区中文字幕| 涩涩网站在线看| 性8sex亚洲区入口| 日韩精品免费一区| 操欧美老女人| 久久99导航| 136福利精品导航| 国产精品黄视频| 欧美a级在线观看| 欧美成人精品xxx| 第九色区av在线| 亚洲国产日韩欧美在线动漫| 91成品人影院| 色狠狠色狠狠综合| 日韩精品一区二区三| 综合久久综合久久| 一级片黄色录像| 久久综合色之久久综合| 又大又长粗又爽又黄少妇视频| 老色鬼精品视频在线观看播放| 97国产精东麻豆人妻电影 | 精品国产av 无码一区二区三区| 色先锋久久av资源部| 日本黄色片视频| 夜夜嗨av一区二区三区中文字幕| 天堂av网手机版| 国产亚洲精品7777| 最新在线黄色网址| 国产v日产∨综合v精品视频| 加勒比av中文字幕| 蜜桃视频第一区免费观看| 91免费视频网站在线观看| 一区在线免费| 久久99久久久久久| 欧美日韩1080p| 中文精品无码中文字幕无码专区 | 久久久综合视频| 国产草草浮力影院| av日韩在线网站| 精品一区二区三区四区五区六区| 国产盗摄视频一区二区三区| 尤物网站在线看| 国产在线精品一区二区夜色| 一区二区三区欧美精品| 麻豆久久久久久| 麻豆一区二区三区视频| 老司机免费视频一区二区三区| 一级片视频免费观看| 日本欧美一区二区| 欧美日韩一区二区三区69堂| 久久国内精品自在自线400部| 欧美日韩中文不卡| 久久99精品国产.久久久久久| 91高清国产视频| 国产在线视频一区二区| 中文字幕乱妇无码av在线| 国产·精品毛片| 91精品啪在线观看国产| 成人av电影在线观看| 中文乱码人妻一区二区三区视频| 久久天天做天天爱综合色| 91网站免费入口| 亚洲国产岛国毛片在线| 亚洲欧美精品aaaaaa片| 亚洲自拍偷拍图区| 欧美 日韩 精品| 欧美三级视频在线观看| 99精品在线看| 亚洲精品美女在线观看播放| 国产黄在线看| 久久伊人免费视频| heyzo高清在线| 国产成人综合av| 国语精品视频| 麻豆传媒一区二区| 色欧美自拍视频| 一卡二卡三卡视频| 久久青草久久| 最新免费av网址| av日韩在线网站| 99精品中文字幕| 亚洲在线视频免费观看| 在线永久看片免费的视频| 欧美精品黑人性xxxx| 蜜桃在线一区二区| 中文字幕日韩欧美精品在线观看| 91cn在线观看| 日韩av毛片网| 香蕉大人久久国产成人av| 欧美日韩亚洲在线| 9191国语精品高清在线| 91好吊色国产欧美日韩在线| 久久99国产精品久久| 亚洲精品女人久久久| 国产精品国模大尺度视频| 国产一级免费观看| 欧美日韩精品欧美日韩精品| 色噜噜在线播放| 伦理中文字幕亚洲| 高清电影一区| 粉嫩av一区二区三区免费观看| 国产欧美日韩一区二区三区四区 | 久久一二三四| 国产伦理在线观看| 国产精品久久久久久亚洲伦| 日本少妇在线观看| 欧美一区二区三区公司| 韩国三级av在线免费观看| 欧美激情二区三区| 亚洲日日夜夜| 日本不卡二区高清三区| 亚洲日本欧美| 日韩欧美中文视频| 国产精品久久毛片a| 国产一级片毛片| 亚洲国产古装精品网站| 天堂8中文在线| 国产日韩av高清| 国产欧美一区二区三区精品观看| 五月丁香综合缴情六月小说| 国产一区美女在线| av在线免费播放网址| 色呦呦国产精品| 神马久久久久久久久久| 欧美大片在线看| 日韩精品免费视频一区二区三区| 亚洲人体一区| 蜜臀av亚洲一区中文字幕| 午夜精产品一区二区在线观看的| 精品电影在线观看| 姝姝窝人体www聚色窝| 欧美国产日韩中文字幕在线| 疯狂欧洲av久久成人av电影| 亚洲一区影院| 免费成人在线网站| 少妇一级黄色片| 欧美中文字幕一区| 成a人片在线观看www视频| 日韩av色在线| 免费精品国产的网站免费观看| 欧美 日韩 国产在线观看| 99免费精品视频| 丁香六月婷婷综合| 亚洲日本成人网| 精品国产免费人成网站| 日本一区视频在线观看| 久久久久久夜| 2019男人天堂| 欧美喷水一区二区| 国产原创在线观看| 91中文在线视频| 欧美午夜久久| 中文字幕在线永久| 欧美性猛交xxxx富婆弯腰| 久久经典视频| 国产精品视频久久久久| 四虎成人精品永久免费av九九| 97超碰人人爽| 亚洲免费观看在线视频| 亚洲国产欧美另类| 97在线观看免费| 伊人久久综合影院| 天天视频天天爽| 亚洲私人黄色宅男| 日韩中文字幕观看| 日本国产欧美一区二区三区| 日韩欧美一区二区三区免费看| 91丨九色丨蝌蚪| 亚洲国产精品久久久男人的天堂| 亚洲色大成网站www| 国产精品综合网站| 欧美国产高清| 国产精品一级黄片| 欧美三区在线观看| 丁香花电影在线观看完整版| 久久综合入口| 久久精品国产亚洲a| 精品无码人妻一区二区三区品| 日韩电视剧免费观看网站| 欧美激情不卡| 日本阿v视频在线观看| 国产欧美一区二区精品久导航| 国产乱码精品一区二区三区精东| 久久久久久国产精品三级玉女聊斋 | 色综合天天综合| 国产三区视频在线观看| 久久国产精品免费一区| 麻豆精品精品国产自在97香蕉| 欧美精品入口蜜桃| 国产一区二区三区丝袜 | 激情av综合网| 亚欧视频在线观看| 久久久精品视频成人| 日本成人7777| 中文字幕第22页| 欧美性xxxxxx| 久久免费电影| 亚洲高清视频一区二区| 成人午夜看片网址| 在线观看中文字幕码| 91精品国产色综合久久不卡98|