php – 在DB列中保存图像URL路径
发布时间:2020-12-13 16:05:55 所属栏目:PHP教程 来源:网络整理
导读:我正在通过php格式更新名称,在注册用户的DB中发送电子邮件.它的工作正常. class.usr.php public function update($uname,$email,$tax) { try { $stmt = $this-conn-prepare('UPDATE tbl_users SET userName = ?,userEmail = ?,tax = ? WHERE userID = ? ');
我正在通过php格式更新名称,在注册用户的DB中发送电子邮件.它的工作正常.
class.usr.php public function update($uname,$email,$tax) { try { $stmt = $this->conn->prepare('UPDATE tbl_users SET userName = ?,userEmail = ?,tax = ? WHERE userID = ? '); $stmt->execute(array($uname,$tax,$_SESSION['userSession'])); return $stmt->fetch(); } catch(PDOException $e) { echo '<p class="bg-danger">'.$e->getMessage().'</p>'; } 形成 <form action="profile.php" method="POST" enctype="multipart/form-data"> Name : <input type="text" name="txtuname" value="<?php echo $row['userName'] ?>" /><br/> Email : <input type="text" name="txtemail" value="<?php echo $row['userEmail'] ?>" /><br> Image <input type="file" name="photo" id="fileSelect"><br> <input type="submit" name="submit" value="Save" /> </form> 表单相关代码保存在db中 <?php $user_home = new USER(); if(!$user_home->is_logged_in()) { header("Location: index.php"); die(); } if (isset($_POST['submit'])) { // new data $uname = $_POST['txtuname']; $email = $_POST['txtemail']; $tax = trim($_POST['tax']); // image url path $uid = (isset($_SESSION['userSession']) ? intval($_SESSION['userSession']) : 0); if ($uid > 0 && $user_home->update($uname,$uid)) { header("Location: profile1.php"); die(); } } $stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid"); $stmt->execute(array(":uid"=>$_SESSION['userSession'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); ?> 在此之后,现在我通过以下代码成功地通过相同的PHP表单将图像上传到文件夹. <?php if(isset($_FILES["photo"]["error"])){ if($_FILES["photo"]["error"] > 0){ echo "Error: " . $_FILES["photo"]["error"] . "<br>"; } else{ $allowed = array("jpg" => "image/jpg","jpeg" => "image/jpeg","gif" => "image/gif","png" => "image/png"); $filename = $_FILES["photo"]["name"]; $filetype = $_FILES["photo"]["type"]; $filesize = $_FILES["photo"]["size"]; // Verify file extension $ext = pathinfo($filename,PATHINFO_EXTENSION); if(!array_key_exists($ext,$allowed)) die("Error: Please select a valid file format."); // Verify file size - 5MB maximum $maxsize = 5 * 1024 * 1024; if($filesize > $maxsize) die("Error: File size is larger than the allowed limit."); // Verify MYME type of the file if(in_array($filetype,$allowed)){ // Check whether file exists before uploading it if(file_exists("upload/" . $_FILES["photo"]["name"])){ echo $_FILES["photo"]["name"] . " is already exists."; } else{ move_uploaded_file($_FILES["photo"]["tmp_name"],"upload/" . $_FILES["photo"]["name"]); echo "Your file was uploaded successfully."; } } else{ echo "Error: There was a problem uploading your file - please try again."; } } } else{ echo ""; } ?> 现在图像只是保存在文件夹中,我需要的是我希望该图像路径保存在数据库中并将该图像路径分配给数据库中的上传用户.这样一个注册用户就可以更新现有图像,但不能再上传一个图像. 我尝试下面的代码,但没有工作: <?php $folder = "upload/"; $file = basename( $_FILES['image']['name']); $full_path = $folder.$file; $tax= $full_path; if(in_array($filetype,"upload/" . $_FILES["photo"]["name"]); echo "Your file was uploaded successfully."; } } else{ echo "Error: There was a problem uploading your file - please try again."; } } } else{ echo ""; } ?> db列:userName,userEmail,tax,photo 在谷歌的帮助下,我完成了以上所有,我是新来的PHP,所以请帮助我. 解决方法
添加新函数以保存文件并使用全局php var $_FILES
1 2 <?php class User { ... const PATH_PHOTOS = '/path/to/photo/folder/'; const BASE_URL = 'http://YOUR_DOMAIN_NAME:YOUR_PORT/YOUR_PATH/'; public function add_photo($file) { $ext = pathinfo($file['name'],PATHINFO_EXTENSION); $file['new_name'] = uniqid(rand(),true) . ".$ext"; if (!$this->_upload_file($file)) return false; return $this->_remove_previous_photo()->_add_file_to_db(self::PATH_PHOTOS . basename($file['new_name'])); } protected function _remove_previous_photo() { $photo = $this->get_photo(); if ($photo) unlink($photo); return $this; } public function get_photo() { global $_SESSION; $stmt = $this->conn->prepare('SELECT photo FROM tbl_users WHERE userID = ? '); $stmt->execute(array($_SESSION['userSession'])); $result = $stmt->fetch(); return reset($result); } public function get_photo_url() { $pathInfo = pathinfo($this->get_photo()); $last_dir = end(explode(DIRECTORY_SEPARATOR,$pathInfo['dirname'])); return self::BASE_URL . "$last_dir/" . basename($this->get_photo()); } protected function _upload_file($file) { $uploadfile = self::PATH_PHOTOS . $file['new_name']; return move_uploaded_file($file['tmp_name'],$uploadfile); } protected function _add_file_to_db($file_path) { try { $stmt = $this->conn->prepare('UPDATE tbl_users SET photo = ? WHERE userID = ? '); return $stmt->execute(array($file_path,$_SESSION['userSession'])); } catch (PDOException $e) { echo '<p class="bg-danger">' . $e->getMessage() . '</p>'; } } ... } ?> 3 <?php $user_home = new USER(); if(!$user_home->is_logged_in()) { header("Location: index.php"); die(); } if (isset($_POST['submit'])) { // new data $uname = $_POST['txtuname']; $email = $_POST['txtemail']; $tax = trim($_POST['tax']); // image url path $uid = (isset($_SESSION['userSession']) ? intval($_SESSION['userSession']) : 0); if ($uid > 0 && $user_home->update($uname,$uid) && $user_home->add_photo($_FILES['photo'])) { header("Location: profile1.php"); die(); } } $stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid"); $stmt->execute(array(":uid"=>$_SESSION['userSession'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); ?> 希望这可以帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |