【问题标题】:How to hard code a file's name in the database while saving an image to the server in php?如何在 php 中将图像保存到服务器时硬编码数据库中的文件名?
【发布时间】:2020-09-08 10:01:30
【问题描述】:

我正在从数据库中获取图像,我一直将其保存为来自服务器的 url。 表单上有这个上传图片部分,它将图片保存在服务器上,并且它的 url 正在保存在数据库中。

代码如下:

$fileName = "";
$target_dir="/home/web/newsletter/uploads/";
$target_file_cv = $target_dir . basename($_FILES['fileToUpload']['name']);
 if(!empty($_FILES['fileToUpload']['name']))
       {
           if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file_cv)) {
               $fileName= $target_file_cv;


        } else {
            echo $twig->render("App/error.twig");
        }
    }
$conn = DB::databaseConnection();
$conn->beginTransaction();
$sqlInsert = "INSERT INTO dbo.form (photo) VALUES (:fileToUpload)";
$stmt = $conn->prepare($sqlInsert);
$stmt->bindParam(':fileToUpload', $fileName);
if ($stmt->execute()) {
           $conn->commit();
 return true;
       } else {
 return false;
    }        
 ?>     

在这里,我想在文件名进入数据库之前对其进行编辑。就像现在它保存为“/home/web/newsletter/uploads/pic.jpg”,但我希望它保存为“newsletter/uploads/pic.jpg”。

我在这里提到了几个问题,并让其他一切正常,但只是在这里硬编码文件名。任何帮助,将不胜感激。 TIA

【问题讨论】:

    标签: php sql-server image filenames


    【解决方案1】:
    $fileName = implode(array_slice(explode("/",$target_file_cv),3),"/");
    

    【讨论】:

    • 嘿,你觉得我刚刚发布的代码怎么样。这样做也是正确的吗?它对我有用
    • 假设它是基本路径 - “/home/web/newsletter/uploads/” 在整个应用程序中是不变的,您可以使用。
    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    【解决方案2】:

    好的,我明白了: 将代码更改为:

    $fileName = "";
    $target_dir="/home/web/newsletter/uploads/";
    $target_file_cv = $target_dir . basename($_FILES['fileToUpload']['name']);
    if(!empty($_FILES['fileToUpload']['name']))
       {
           if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file_cv)) {
               $fileName= "newsletter/uploads/" . $_FILES['fileToUpload']['name'];
    
    
        } else {
            echo $twig->render("App/error.twig");
        }
    }
    $conn = DB::databaseConnection();
    $conn->beginTransaction();
    $sqlInsert = "INSERT INTO dbo.form (photo) VALUES (:fileToUpload)";
    $stmt = $conn->prepare($sqlInsert);
    $stmt->bindParam(':fileToUpload', $fileName);
    if ($stmt->execute()) {
           $conn->commit();
    return true;
       } else {
    return false;
    }        
    ?>     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 2012-11-27
      • 2014-02-05
      相关资源
      最近更新 更多