昨天看了一下Objective-C如何上傳照片給自己的Server
在書中的code有用到PHP,由於對PHP不太熟,所以參考O'REILLY書中的code,研究了一下Server端的PHP
1. Sample code:
<?php
echo >>>_END
<html><head><title>PHP upload file</title></head>
<form method='post' action='uploadfile.php' enctype='multipart/form-data'>
select file: <input type='file' name='filename' size='10'/>
<input type='submit' value='Upload'/>
</form>
_END;
if($_FILES){
$name = $_FILES['filename']['name'];
move_uploaded_file($_FILES['filename']['tmp_name'], "upload/$name");
echo "upload image '$name'<br/><img src='upload/$name' />";
}
echo "</head></html>";
?>
2. 簡單看了一下sample code,利用PHP寫echo html的語法給client端
基本上echo出來的html簡單來說為一個簡單的表單,如下圖
在sample code中用到了$_FILES的系統陣列,在O'REILLY的書中提到可以檢查$_FILES來判斷使用者是不是已經上傳了檔案,在使用者上傳檔案之前$_FILES是空的
$_FILES陣列中存了五項資訊,在這個部份參考O'REILLY書的P.159頁
$_FILES 陣列內容
Array Element |
content |
$_FILE['file']['name'] |
上傳檔案名稱 |
$_FILE['file']['type'] |
上傳檔案的內容型別 |
$_FILE['file']['size'] |
上傳檔案的byte大小 |
$_FILE['file']['tmp_name'] |
儲存在server的暫時檔案名稱 |
$_FILE['file']['error'] |
上傳檔案時產生的錯誤碼 |
3. 上面的code完成了上傳的php但是有個問題,會遇到permission denied的問題,瀏覽器上會顯示如下範例
Warning: move_uploaded_file(Screenshot-1.png): failed to open stream: Permission denied in /var/www/uploadfile.php on line 12 Warning: move_uploaded_file(): Unable to move '/tmp/php9oNy5i' to 'Screenshot-1.png' in /var/www/uploadfile.php on line 12 upload image 'Screenshot-1.png'
上網查了一下,上面的敘述描述使用者對該資料夾沒有存取的權限,在linux的環境下,可以用chmod更改權限的指令更改資料夾權限
依照以下部驟來解決上面的問題:
cd /var/www
sudo mkdir upload
sudo chown -R www-data:www-data upload
完成上述的指令後,使用者就有權限對upload的資料夾作存取的動作
4. 瀏覽器成功執行的結果:
沒有留言:
張貼留言