關於圖片上傳,實現方法不少,好比能夠用jQuery,固然,咱們的thinkPHP內置了關於圖片上傳的功能,咱們能夠直接使用,使用方法以下:php
首先,是表單書寫,咱們創建以下表單:html
[html] view plaincopy數據庫
<form action="__URL__/addChk" method="post" enctype="multipart/form-data"> ide
<table cellspacing="1" cellpadding="2" width="99%" align="center" border="0"> 函數
<tbody> post
<tr> 測試
<th align="left" colspan="2" height="25">添加新遊戲</th> 網站
</tr> this
<tr> url
<td width="17%" height="23">遊戲名稱</td>
<td width="83%"><strong><input type="text" name="gamename" /></strong></td>
</tr>
<tr>
<td height="23">遊戲圖片</td>
<td ><input type="file" name="gameimg"/></td>
</tr>
<tr>
<td width="17%" height="23">遊戲簡介<span></span></td>
<td width="83%"><textarea name="gameinfo" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td height="23">遊戲地址:</td>
<td>
<input type="text" name="gamelink"/></td>
</tr>
<tr>
<td height="23" colspan="2" ><input type="submit" value="添加" />
<input type="reset" value="從新填寫"/></td>
</tr>
</tbody>
</table>
</form>
這裏有個很是重要的地方,就是必定要在表單項目添加上enctype="multipart/form-data"這一點是很是重要的,由於這個是容許你上傳的類型的,若是沒有他,就不能上傳,關於enctype的其餘幾種類型,我會在之後的文章上說明。這裏咱們新建php文件AddAction.class.php,代碼以下;
[php] view plaincopy
class AddAction extends Action{
/**
* 說明:ThinkPHP文件上傳測試函數
* 做者:攀爬的蝸牛
* 時間:2012-03-29
* 版本:1.0
* 網址:http://www.dutycode.com
*/
public function addChk(){
//導入圖片上傳類
import("ORG.Net.UploadFile");
//實例化上傳類
$upload = new UploadFile();
$upload->maxSize = 3145728;
//設置文件上傳類型
$upload->allowExts = array('jpg','gif','png','jpeg');
//設置文件上傳位置
$upload->savePath = "./Public/Uploads/";//這裏說明一下,因爲ThinkPHP是有入口文件的,因此這裏的./Public是指網站根目錄下的Public文件夾
//設置文件上傳名(按照時間)
$upload->saveRule = "time";
if (!$upload->upload()){
$this->error($upload->getErrorMsg());
}else{
//上傳成功,獲取上傳信息
$info = $upload->getUploadFileInfo();
}
//保存表單數據,包括上傳的圖片
$game = M("Game");
$game->create();
$savename = $info[0]['savename'];
//$savepath = $info[0]['savepath'];
//$aa = $savepath.$savename;
//dump($aa);
$imgurl = "http://demo.dutycode.com/Public/Uploads/".$savename;//這裏是設置文件的url注意使用.不是+
//dump($imgurl);
$data['gamename'] = $_POST['gamename'];
$data['gameimg'] = $imgurl;
$data['gameinfo'] = $_POST['gameinfo'];
$data['gamelink'] = $_POST['gamelink'];
$data['publishtime'] = date("Y-m-d H:i:s");
$res = $game->add($data);//寫入數據庫
if ($res){
$this->redirect("addGame","",2,"添加成功!兩秒後跳回");
}else{
$this->redirect("addGame","",2,"失敗!兩秒後跳回");
}
}