php - 上传图片时在数据库中保存完整的 URL 链接

标签 php mysql

我的图片上传表单运行良好。将名称和路径保存到数据库。我想将完整的 url 保存到带有名称的图像,而不仅仅是一个名称。我的意思是现在在 DB 中保存 file_name.jpg 我想保存 http://example.com/images/file_name.jpg。这是 upload.php

            define('MAX_FILE_SIZE', 20000000430);
            $uploadDir = "../../img/";
            $permitted = array('image/jpeg', 'image/jpeg', 'image/png', 'image/gif');               

            $fileName  = $_FILES['image']['name'];
            $tmpName   = $_FILES['image']['tmp_name'];
            $fileSize  = $_FILES['image']['size'];
            $fileType  = $_FILES['image']['type'];

            // make a new image name
            $ext = substr(strrchr($fileName, "."), 1);
            // generate the random file name
            $randName = md5(rand() * time());

            // image name with extension
            $myFile = $randName . '.' . $ext;
            // save image path
            $path = $uploadDir . $myFile;
            if (in_array($fileType, $permitted)) 
            {
                $result = move_uploaded_file($tmpName, $path);
                    if (!$result) 
                    {
                            echo "Error uploading image file";
                            exit;
                    } 
                    else 
                    {                           
                        // keep track post values
                        $name = $_POST['name'];
                        $description = $_POST['description'];
                        // update data
                        $pdo = Database::connect();
                        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                        $sql = "UPDATE food set name = ?, image = ?, path = ?, description = ? 
                                WHERE id = ?";
                            $q = $pdo->prepare($sql);
                            $q->execute(array($name,$myFile,$path,$description,$id));
                            Database::disconnect();
                            echo "<code>Information updated!!</code>";
                    } 
                }

我尝试将 URL 放在 $uploadDir 中。

    $uploadDir = "http://example.com/img/";

但是我得到了这个错误。

Warning: move_uploaded_file(http://example.com/img/75a13564a8f3305fb0a30ab95487b8de.jpg): failed to open stream: HTTP wrapper does not support writeable connections

也试过类似的东西,得到了同样的错误

define('domainURL',         'http://'.$_SERVER['HTTP_HOST']); 
$path = domainURL . $uploadDir . $myFile;

最佳答案

move_uploaded_file函数不接受文件 url。

接受图片实际路径

因为,您的文件正在物理移动。

例如$path = $_SERVER['DOCUMENT_ROOT'] 。 'img/'

关于php - 上传图片时在数据库中保存完整的 URL 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352752/

相关文章:

php - 如何检查所有行是否具有相同的列值?

php - HTML 表中的 MYsql。删除行

php - Yii,如何让 Controller 代码在所有 View 中运行

mysql - SQL 中子查询返回多于 1 行?

php - 有没有可以帮助我正确引用 SQL 字符串的服务?

mysql - sql:使用同一键左连接多表

php微秒转换为DateTime并返回

PHP 和 FFmpeg : works on terminal but ffmpeg error when in shell_exec

php - 循环遍历 PDO 中的数据

MySQL 中的 PHP 字符串变量 Like 查询