1 沸呐, 在實際的項目開發(fā)中,基本都會有頭像上傳這個功能敌卓,實現(xiàn)php的上傳功能瘟檩,就需要使用到move_uploaded_file這個函數(shù)
bool move_uploaded_file ( string $filename , string $destination )
filename: 上傳文件的文件名抹缕, 一般這里都寫 $_FILES["file"]["tmp_name"]
destination:文件寫入的路徑: 例如 upload/xxx.png
返回值就是上傳是否成功
2,Apache 根目錄 DocumentRoot 下創(chuàng)建名為 ‘upload’ 的文件夾墨辛,并且在該文件夾下創(chuàng)建 upload.html(瀏覽器訪問卓研,選擇要上傳的文件)、upload_file.php(保存瀏覽器上傳的文件到服務(wù)器)
相關(guān)命令介紹
mkdir : 創(chuàng)建文件夾
touch : 創(chuàng)建文件
localhost:~ wany$ cd /Library/WebServer/Documents/
localhost:Documents wany $ mkdir upload
mkdir: uploadd: Permission denied
localhost:Documents wany $ sudo mkdir upload
Password:
localhost:Documents wany $ cd upload/
localhost:upload wany $ touch upload.html
touch: upload.html: Permission denied
localhost:upload wany $ sudo touch upload.html
localhost:upload wany $ sudo touch upload_file.php
localhost:upload wany $
3,編輯upload.html奏赘, 可以使用文本編輯或vim終端寥闪,內(nèi)容如下
<html>
<body>
<!--> enctype 屬性規(guī)定了在提交表單時要使用哪種內(nèi)容類型。在表單需要二進制數(shù)據(jù)時磨淌,比如文件內(nèi)容橙垢,請使用 "multipart/form-data"。 <-->
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<!-->type="file" 屬性規(guī)定了應(yīng)該把輸入作為文件來處理伦糯。舉例來說,當在瀏覽器中預覽時嗽元,會看到輸入框旁邊有一個瀏覽按鈕敛纲。<-->
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
4, 編輯upload_file.php剂癌, 可以使用文本編輯或vim終端淤翔,內(nèi)容如下
<?php
header("Content-Type:text/json;charset=utf-8");
if (move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {
echo "上傳成功";
}
?>
5, 啟動Apache 服務(wù)佩谷,如果已經(jīng)啟動跳過本步驟
localhost:upload xwmedia01$ cd ~
localhost:~ wany$ sudo apachectl restart
6旁壮,瀏覽器訪問: http://localhost/upload.html, 選擇文件上傳,點submit后谐檀,瀏覽器可能會出現(xiàn)以下錯誤信息
Warning: : failed to open stream: Permission denied in /Library/WebServer/Documents/upload/upload.php on line 3
Warning: move_uploaded_file(): in /Library/WebServer/Documents/upload/upload.php on line 3
出現(xiàn)該錯誤是因為文件要寫入的文件路徑中抡谐,某一個文件夾沒有寫入權(quán)限,需要給沒有權(quán)限的文件夾開啟寫入權(quán)限桐猬,我這里Documents 已經(jīng)有權(quán)限了麦撵,新建的upload文件夾沒有權(quán)限
localhost:~ wany$ cd /Library/WebServer/Documents/
localhost:Documents wany$ chmod 777 upload
現(xiàn)在upload已經(jīng)打開了寫入權(quán)限了,嘗試重新訪問: http://localhost/upload/upload.html溃肪,重復上傳步驟免胃,瀏覽器顯示:上傳成功,可以到 /Library/WebServer/Documents/upload/ 下 去查看上傳的文件
localhost:~ wany$ cd /Library/WebServer/Documents/upload
localhost:upload wany$ ls
localhost:upload wany$ ls
upload.html
upload.php
uploadxxx.png
至此基本的文件上傳實現(xiàn)了惫撰,實際項目中還要根據(jù)需求增加各種判斷羔沙,例如限制文件類型,限制文件大小等厨钻。
可以前往 w3cschool 了解更多關(guān)于文件上傳扼雏,以及其他php相關(guān)知識