thinkphp達到UploadFile.class.php圖片上傳功能
1.我們首先須要建立一個表
CREATE TABLE IF NOT EXISTS `tp_image` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image` varchar(200) NOT NULL,
`create_time` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2.然後再conf檔案中加入配置(最後一段配置是可選的,僅僅是為了方便統一管理URL路徑)
<?php
return array(
`URL_MODEL` => 2, // 假設你的環境不支援PATHINFO 請設定為3
`DB_TYPE` => `mysql`,
`DB_HOST` => `localhost`,
`DB_NAME` => `thinkphp`,
`DB_USER` => `root`,
`DB_PWD` => “,
`DB_PORT` => `3306`,
`DB_PREFIX` => `tp_`,
`SHOW_PAGE_TRACE` =>true, //顯示頁面除錯明細
`TMPL_PARSE_STRING` => array( // 地址替換,用_UPLOAD_資料夾 取代 根資料夾下的Upload資料夾
`__UPLOAD__` => __ROOT__.`/Uploads`,
),
);
?>
3.加入一個Image模組(名字能夠隨便取)
<?php
class ImageAction extends Action{
/**
* 建立index 入口方法
*/
public function index(){
$image=M(`Image`);
$data=$image->order(`create_time desc`)->find(); //獲取最後上傳圖片
$this->assign(`data`,$data);
$this->display();
}
?
>
4.建立對應index檢視檔案(index.html)
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
<style type=”text/css”>
#img{height:22px; border:#000 2px solid}
#button{height:30px; width:100px;}
</style>
</head>
<body>
<div class=”result” >上傳同意檔案型別:gif png jpg 影像檔案,並生成2張縮圖,當中大圖帶水印,生成後會刪除原圖。</div><br>
<notempty name=”data”><img src=”__UPLOAD__/m_{$data.image}” /> <img src=”__UPLOAD__/s_{$data.image}” /></notempty>
<form action=”__URL__/upload” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”image” id=”img”/>
<input type=”submit” value=”上傳” id=”button”>
</form>
</body>
</html>
5.選擇圖片,點選上傳button後,會跳到Image模組的upload方法上。Image模組上如今還沒有這種方法,於是我們建立它
<?
php
class ImageAction extends Action{
/**
* 建立index 入口方法
*/
public function index(){
$image=M(`Image`);
$data=$image->order(`create_time desc`)->find(); //獲取最後上傳圖片
var_dump($data);
$this->assign(`data`,$data);
$this->display();
}
//假設上傳的檔案不為空,跳轉到_upload方法
public function upload(){
//假設不為空
if(!empty($_FILES))
{
$this->_upload();
}
}
6.假設提交的不是NULL,則跳到_upload方法上,此方法實現圖片上傳的功能
<?
php
class ImageAction extends Action{
/**
* 建立index 入口方法
*/
public function index(){
$image=M(`Image`);
$data=$image->order(`create_time desc`)->find(); //獲取最後上傳圖片
var_dump($data);
$this->assign(`data`,$data);
$this->display();
}
//假設上傳的檔案不為空,跳轉到_upload方法
public function upload(){
//假設不為空
if(!empty($_FILES))
{
$this->_upload();
}
}
/***
* 實現圖片上傳
*/
public function _upload(){
import(`@.ORG.UploadFile`);
//匯入上傳類
$upload = new UploadFile();
//設定上傳檔案大小
$upload->maxSize = 3292200;
//設定上傳檔案型別
$upload->allowExts = explode(`,`, `jpg,gif,png,jpeg`);
//設定附件上傳資料夾
$upload->savePath = `./Uploads/`;
//設定須要生成縮圖,僅對影像檔案有效
$upload->thumb = true;
// 設定引用圖片類庫包路徑
$upload->imageClassPath = `@.ORG.Image`;
//設定須要生成縮圖的檔案字尾
$upload->thumbPrefix = `m_,s_`; //生產2張縮圖
//設定縮圖最大寬度
$upload->thumbMaxWidth = `400,100`;
//設定縮圖最大高度
$upload->thumbMaxHeight = `400,100`;
//設定上傳檔案規則
$upload->saveRule = `uniqid`;
//刪除原圖
$upload->thumbRemoveOrigin = true;
//假設上傳不成功
if (!$upload->upload())
{
//捕獲上傳異常
$this->error($upload->getErrorMsg());
}
else
{
//取得成功上傳的檔案資訊
$uploadList = $upload->getUploadFileInfo();
//匯入圖片類
import(`@.ORG.Image`);
//給m_縮圖加入水印, Image::water(`原檔案路徑`,`水印圖片地址`)
Image::water($uploadList[0][`savepath`] . `m_` . $uploadList[0][`savename`], APP_PATH.`Tpl/Public/Images/logo.png`);
//圖片名賦值給 欄位image
$_POST[`image`] = $uploadList[0][`savename`];
}
$model = M(`image`);
//儲存當前資料物件
$data[`image`] = $_POST[`image`];
$data[`create_time`] = NOW_TIME;
$list = $model->add($data);
if ($list !== false)
{
$this->success(`上傳圖片成功!`);
}
else
{
$this->error(`上傳圖片失敗!`);
}
}
}
?>
上傳成功生成兩張縮圖
須要說明的是:
ThinkPHP裡自帶的圖片上傳類(UploadFile.class.php) 和圖片模型類(Image.class.php),要完整版的ThinkPHP包才有。
沒有的話須要在Lib裡建立一個目錄(ORG),然後去官網下載擴充套件包把這兩個檔案放到ORG目錄中。
我是另一種情況
版權宣告:本文博主原創文章,部落格,未經同意,不得轉載。
本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/4758479.html,如需轉載請自行聯絡原作者
相關文章
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- thinkphp 增加七牛上傳功能PHP
- thinkphp5 後臺上傳圖片提示 image null 非法上傳檔案PHPNull
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- Laravel 上傳圖片到七牛雲Laravel
- Retrofit2.0:上傳圖片到PHPPHP
- node+express實現圖片上傳功能Express
- Flutter 上傳圖片到阿里雲OSSFlutter阿里
- vue 圖片上傳到阿里雲ossVue阿里
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- android選擇圖片或拍照圖片上傳到伺服器(包括上傳引數)Android伺服器
- 配置Django-TinyMCE元件支援上傳圖片功能Django元件
- Laravel- 圖片上傳新增自動裁剪功能Laravel
- PHP仿微信多圖片預覽上傳功能PHP
- 【easyui 】上傳圖片UI
- 上傳圖片jsJS
- angular上傳圖片到.netcore後端AngularNetCore後端
- 圖片裁剪並上傳到阿里雲oss阿里
- 小程式上傳圖片到阿里雲oss阿里
- 小程式開發:上傳圖片到騰訊雲
- uniapp小程式上傳圖片到騰訊雲APP
- 圖片上傳及圖片處理
- 我需要在Web上完成一個圖片上傳的功能Web
- [Laravel Admin] 檔案 / 圖片上傳功能之擴充套件 -- 上傳新圖且保留原圖Laravel套件
- 直播電商平臺開發,釋出多圖片上傳到伺服器並實現圖片預覽功能伺服器
- php圖片上傳之圖片轉換PHP
- Alfred Workflow 一鍵上傳圖片到 GitHub 返回 MarkdownAlfredGithub
- ueditor jsp版上傳圖片到阿里雲JS阿里
- 原生jq實現圖片上傳到伺服器伺服器
- 我需要在Web上完成一個圖片上傳的功能(+2)Web
- 多圖片formpost上傳ORM
- input file圖片上傳
- PHP上傳圖片類PHP
- 圖片檔案上傳
- vue 上傳圖片到阿里雲(前端直傳:不推薦)Vue阿里前端
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- vue 上傳圖片進行壓縮圖片Vue
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)