Thinkphp 更新圖片,刪除原圖,更新文字或者圖片互不干涉,可以只更新圖片或者只更新文字。
好多新手同學有這個問題,更新圖片的時候原圖還在,這樣會導致伺服器的空間越來越小,這裡提供一個更新圖片的時候刪除原圖片;
還有一個問題例如:新聞頁面 有圖片有文字,想只更新圖片或者只更新文字,有時候你只更新文字它會提醒你沒有上傳檔案,這個文字在這這裡也會解決;
首先上程式碼
public function update($id)
{
//預設顯示新增表單,這裡顯示更新頁面的顯示,沒有資料傳輸過來就顯示原來的圖文,通過id找到你更新的那個資料
$id = intval($id);
if (!IS_POST) {
$model = M('msxl')->where("id= %d",$id)->find();
$this->assign("category",getSortedCategory(M('msfl')->select()));
$this->assign('msxl',$model);
$this->display();
}
else {
$model = D("Msxl");
//這裡是重點檢視是否有檔案上傳,你可以在上面列印一下dump($_FILES),這是一個二維陣列,如果有檔案上傳就會有提示你上傳檔案的資訊如下
array(1) { ["image"] => array(5) { ["name"] => string(5) "5.jpg" ["type"] => string(10) "image/jpeg" ["tmp_name"] => string(42) "C:\Users\PC\AppData\Local\Temp\php1262.tmp" ["error"] => int(0) ["size"] => int(142302) } }如果你沒有上傳檔案就會提示如下
array(1) { ["image"] => array(5) { ["name"] => string(0) "" ["type"] => string(0) "" ["tmp_name"] => string(0) "" ["error"] => int(4) ["size"] => int(0) } }這個時候通過$_FILES[image][size]就可以判斷是否有檔案上傳如果有程式往下走
if($_FILES['image']['size'] != 0){
//上傳單個影象
$upload = new \Think\Upload();// 例項化上傳類
$upload->maxSize = 1*1024*1024 ;// 設定附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設定附件上傳型別
$upload->rootPath = './Public/'; // 設定附件上傳根目錄
$upload->savePath = 'msupload/'; // 設定附件上傳(子)目錄
$upload->saveName=array('uniqid','');//上傳檔案的儲存規則
$upload->autoSub = true;//自動使用子目錄儲存上傳檔案
$upload->subName = array('date','Ymd');
// 上傳單個圖片
$info = $upload->uploadOne($_FILES['image']);
if(!$info) {// 上傳錯誤提示錯誤資訊
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳檔案資訊
$img_url=$info['savepath'].$info['savename'];
$image = new \Think\Image();
$scrimg = $upload->rootPath.$img_url;
$image -> open($scrimg );
$image -> thumb(50,50); //按照比例縮小
$smallimg = $info['savepath']."small_".$info['savename'];
$image -> save($upload->rootPath.$smallimg);
//刪除原圖片這裡就是刪除原圖片的方法,如下兩個欄位的值是從前端頁面接收過來的,都是從資料庫讀取的原圖地址
$url = $data['pic'];
$smallurl = $data['picsmall'];
原圖地址都是隱藏域如下
<input type="file" name="image" id="msxl-image" style="width:150px;" onchange="javascript:setImagePreview();">
<input type="hidden" name="pic" value="{$msxl.img_url}">
<input type="hidden" name="picsmall" value="{$msxl.imgsmall_url}">
這時候用到file_exists這個函式,判斷檔案是否存在,如果存在那麼就刪除,我這裡有一個數縮率圖
$data = I();
$url = $data['pic'];
$smallurl = $data['picsmall'];
$url = $_SERVER["DOCUMENT_ROOT"]."/Public/".$data['pic'];
$smallurl = $_SERVER["DOCUMENT_ROOT"]."/Public/".$data['picsmall'];
if (file_exists($url)) {
unlink($url);
if (file_exists($smallurl)) {
unlink($smallurl);
}
}
$data['img_url'] = $img_url;
$data['time'] = time();
$data['create_time'] = time();
$data['user_id'] = 1;
$data['imgsmall_url'] =$smallimg;
}
}else {
$data = I();
$img_url = $data['pic'];
$smallimg = $data['picsmall'];
$data['img_url'] = $img_url;
$data['imgsmall_url'] =$smallimg;
$data['time'] = time();
$data['create_time'] = time();
$data['user_id'] = 1;
}
if (!$model->data($data)->create()) {
$this->error($model->getError());//輸出上傳錯誤資訊
}else{
if ($model->save($data)) {
$this->success("更新成功", U('msxl/index'));
} else {
$this->error("更新失敗");
}
}
}
}
這時候就達到我們需要的效果了。
相關文章
- 修改網站裡面的圖片,網站圖片更新教程網站
- PHP 圖片、文字合成PHP
- 【python】圖片插入文字Python
- 直播系統搭建,插入圖片、刪除圖片、設定圖片大小
- SDWebImage支援URL不變時更新圖片內容Web
- LaunchScreen.storyboard顯示啟動圖片未更新
- 哪個圖片識別文字app能快速轉換圖片成文字?APP
- css讓圖片或者元素置灰CSS
- 圖片裁剪-文字識別-文字新增
- 提取圖片文字的技巧
- paddleocr圖片文字識別
- 圖片轉換文字appAPP
- GD 庫 PNG 透明底圖片新增文字及圖片水印
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- js重新整理一次隨機更新圖片JS隨機
- 如何免費識別圖片文字?圖片文字識別軟體怎麼用
- 【Go語言繪圖】圖片新增文字(二)Go繪圖
- 【Go語言繪圖】圖片新增文字(一)Go繪圖
- UIButton的圖片和文字位置UI
- UIbutton 上下圖片文字佈局UI
- CSS文字環繞圖片效果CSS
- Python 提取PDF文字和圖片Python
- 分享:識別圖片文字方法
- Tesseract OCR 圖片文字識別
- CSS聚光燈文字(無圖片)CSS
- Overleaf中插入pdf圖片只顯示圖片路徑的解決方式
- 圖片文字識別工具怎樣進行批次識別圖片?
- 識別圖片文字轉換成word文字真的很難嗎?分享圖片轉文字的技巧
- GO專案實戰—開發上傳圖片功能 【20220527更新】Go
- canvas 圖片、文字模糊問題Canvas
- CSS圖片上面新增文字說明CSS
- 如何將圖片識別成文字?
- 如何修改網頁文字或圖片?網頁
- css圖片陰影、文字陰影CSS
- 圖片識別文字具體操作
- 圖片識別文字,分享給你!
- 商品圖片批量加水印,一鍵新增文字、logo圖片水印方法分享Go
- Python將base64轉為文件或者圖片Python
- 什麼軟體可以把圖片轉換成文字?