PHP(Thinkphp5)實現上傳更換圖片
阿新 • • 發佈:2018-11-25
問題引入:
當點選修改時(前端傳值問題在這不多說,這裡主要講解後臺上傳,前臺傳值問題請參考我的上一篇部落格:https://blog.csdn.net/qq_40820862/article/details/83683980),使圖片發生替換.
例項解決思路:
由於上傳的圖片都指定在伺服器上的某個目錄,然後資料庫中記錄連結這個圖片的"連結",所以
1.先獲取前端傳入的id值和圖片
2.判斷是否選中了圖片才點選的上傳.
3.進行檔案上傳,選擇上傳目錄
4.獲取到上傳的檔案目錄(可用字串拼接出上傳目錄路徑)
5(可選)如果路徑存在問題(比如 ' \ ' ' / ' 錯亂,可以用替換函式替換 )
6.將拼接的字串插入到資料庫中,使資料庫中的連結是你所上傳圖片的連結.
例項程式碼:
/** * 輪播圖片 -> 獲取前端要修改的id和新圖片 */ public function edit_images(Request $request, $id){ // 接收前端傳來點選修改的id的值和前端在本地選擇想要更換上傳的圖片 -> 獲取表單上傳檔案 $file = request()->file('file'); // 判斷是否有上傳的圖片 if($file == null) { $this->error("很抱歉,您未選擇圖片!!"); } // 進行檔案上傳 $info = $file->rule('md5')->move('./static/index/images/slideshow/'); // 獲取上傳檔案的目錄 $saveName = $info->getsaveName(); $str = "/Blogs/public/static/index/images/slideshow/". $saveName; // strtr 字串替換函式 -> 將路徑的\\替換成 $str1 = strtr($str, '\\', '/'); // 將拼接成的字串路徑插入到資料庫中 $code = Db::execute("update all_heads set all_images='$str1' where id = '$id'"); // 判斷資料是否成功插入到資料庫中 if($code) { $this->redirect("allimages"); } else { $this->error("很抱歉,輪播圖更換失敗!!"); } }
更換成功後,資料庫中的圖片連結也跟隨著發生了變化.