谈谈php中上传文件的处理,
这是一个表单的时代。。。
我们在浏览器中编辑自己的信息,会遇到上传头像;在文库中,我们会上传文档......到处存在“上传”这个词。
php是最好的语言(其他语言的程序猿们不要打我...)。php在处理交互方面有天然的优势,自然有强大的函数来处理上传文件。
和提交一般的数据一样,上传文件也需要表单。下面建立一个特殊的表单来上传文件。
<span>1</span> <span><</span><span>form </span><span>enctype</span><span>="multipart/form-data"</span><span> action</span><span>="upload_file.php"</span><span> name</span><span>="upload_form"</span><span> method</span><span>="post"</span><span>></span> <span>2</span> <span><!--</span><span>MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input</span><span>--></span> <span>3</span> <span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="MAX_FILE_SIZE"</span><span> value</span><span>="30000"</span><span>/></span> <span>4</span> <span> 上传的文件: </span><span>5</span> <span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="userfile"</span><span>/></span> <span>6</span> <span><</span><span>hr</span><span>/></span> <span>7</span> <span><</span><span>input </span><span>type</span><span>="submit"</span><span> name</span><span>="sub_button"</span><span> value</span><span>="上传文件的提交按钮"</span><span>/></span> <span>8</span> <span>9</span> <span></</span><span>form</span><span>></span>
ok,我们分析一下这个代码段。
以上的enctype规定了数据在发送给服务器的时候采用什么编码格式。它有三个值:
MAX_FILE_SIZE隐藏字段(单位为字节)必须放在文件输入字段之前,其值为文件的最大尺寸。这是对浏览器的一个建议,php也会检查此项。不过在浏览器端可以绕过这个障碍,因此不要指望用它来阻挡大文件。但是文件最大值受php.ini中的post_max_size= (number)M的限制。但是最好还是加上这个项目,它可以避免用户在花时间等待上传大文件之后才发现大文件上传失败的麻烦。
在用户提交文件表单之后,服务器端就可以接受数据了。PHP中有全局变量$_FILES来处理文件,假设上传字段名称为userfile(可以在字段中随意更改)。
$_FILES['userfile']['name'] 客户端文件的原名称。
$_FILES['userfile']['type'] 文件的MIME类型,这个在PHP端并不检查,因此这个值还不一定有。
$_FILES['userfile']['size'] 上传的文件的大小(单位字节)。
$_FILES['userfile']['tmp_name'] 文件上传后在服务器端存储的临时文件名。
$_FILES['userfile']['error'] 和该文件上传相关的错误代码。如果上传成功,值为0.
文件在上传后,默认存储到服务器默认临时目录中,在php.ini中的upload_tmp_dir设置为其他路径。
在这里还得说说一个move_uploaded_file()函数:
这个函数检查并确保由 file 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。
如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
下面是一个php上传文件实例:
<span> 1</span> <span><</span><span>b</span><span>></span>上传文件处理<span></</span><span>b</span><span>></span> <span> 2</span> <span><</span><span>hr</span><span>/></span> <span> 3</span> <span><?</span><span>php </span><span> 4</span> <span>if (isset($_FILES['userfile'])) { </span><span> 5</span> <span> $uploaddir = 'upload/'; </span><span> 6</span> <span> $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); </span><span> 7</span> <span> echo '<pre class="brush:php;toolbar:false">'; </span><span> 8</span> <span> if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { </span><span> 9</span> <span> echo '上传文件成功'.'<br>'; </span><span>10</span> <span> } else { </span><span>11</span> <span> echo '上传文件失败'.'<br>'; </span><span>12</span> <span> } </span><span>13</span> <span> echo '这是上传文件的一些信息:' . '<br>'; </span><span>14</span> <span> print_r($_FILES); </span><span>15</span> <span> echo '<pre class="brush:php;toolbar:false">'; </span><span>16</span> <span> die(); </span><span>17</span> <span>} </span><span>18</span> <span>19</span> <span>?></span> <span>20</span> <span><</span><span>b</span><span>></span>上传表单<span></</span><span>b</span><span>></span> <span>21</span> <span><!--</span><span>表单中的enctype属,必须和以下定义保持一致</span><span>--></span> <span>22</span> <span><</span><span>form </span><span>enctype</span><span>="multipart/form-data"</span><span> action</span><span>="upload_file.php"</span><span> name</span><span>="upload_form"</span><span> method</span><span>="post"</span><span>></span> <span>23</span> <span><!--</span><span>MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input</span><span>--></span> <span>24</span> <span><</span><span>input </span><span>type</span><span>="hidden"</span><span> name</span><span>="MAX_FILE_SIZE"</span><span> value</span><span>="30000"</span><span>/></span> <span>25</span> <span> 上传的文件: </span><span>26</span> <span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="userfile"</span><span>/></span> <span>27</span> <span><</span><span>hr</span><span>/></span> <span>28</span> <span><</span><span>input </span><span>type</span><span>="submit"</span><span> name</span><span>="sub_button"</span><span> value</span><span>="上传文件的提交按钮"</span><span>/></span> <span>29</span> <span></</span><span>form</span><span>><br /></span>

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

PHP和Python都是高層次的編程語言,廣泛應用於Web開發、數據處理和自動化任務。 1.PHP常用於構建動態網站和內容管理系統,而Python常用於構建Web框架和數據科學。 2.PHP使用echo輸出內容,Python使用print。 3.兩者都支持面向對象編程,但語法和關鍵字不同。 4.PHP支持弱類型轉換,Python則更嚴格。 5.PHP性能優化包括使用OPcache和異步編程,Python則使用cProfile和異步編程。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用