【问题标题】:How to store uploaded file name with path into database如何将上传的文件名和路径存储到数据库中
【发布时间】:2016-10-03 00:35:57
【问题描述】:

我正在使用 dropzone api 上传图像文件(拖放)。当我上传文件时,表单会自动提交。但是我的表单中还有两个文本字段。而且我想将上传的文件路径存储到数据库中。我怎样才能做到这一点。这是我的代码。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<!-- Add Dropzone -->
<link rel="stylesheet" type="text/css" href="css/dropzone.css" />
<script type="text/javascript" src="js/dropzone.js"></script>
</head>
<body>
<h1>Drag&amp;Drop Multiple Files Upload using DropzoneJS and PHP by CodexWorld</h1>
<div class="image_upload_div">
    <form action="upload.php" class="dropzone">
    </form>
        <input type="text" name="text1">
        <input type="text" name="text2">
</div>  
</body>
</html>

我的upload.php文件

<?php
   if(!empty($_FILES)){

//database configuration
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = 'root';
$dbName = 'sample';
//connect with the database
$conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if($mysqli->connect_errno){
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$targetDir = "uploads/";
$fileName = $_FILES['file']['name'];
$targetFile = $targetDir.$fileName;
if(move_uploaded_file($_FILES['file']['tmp_name'],$targetFile)){
    //insert file information into db table
    $conn->query("INSERT INTO files (file_name, uploaded) VALUES('".$fileName."','".date("Y-m-d H:i:s")."')");
  }

}
?>

【问题讨论】:

    标签: php jquery html dropzone.js


    【解决方案1】:

    这样使用

    <input  type="file" name="file" id="file" />	
    <input type="submit" value="Upload Image" name="submit">
    
    	
    
    $file=$_FILES['file']['name'];
    $dest="uploads/$file";
    $src=$_FILES['file']['tmp_name'];
    move_uploaded_file($src,$dest);
    
    $result=mysql_query("insert into tablename(dbfieldname) values('$dest')");

    【讨论】:

    • 我想使用 dropzone api 做到这一点。正确阅读问题。谢谢
    【解决方案2】:

    首先,您必须创建一个 div 并从中删除 dropzone 类 阻止它附加到整个表单的表单。

     <div class="dropzone dropzone-previews dzUpload" id="my-awesome-dropzone" name = "files"></div>
    

    然后您必须更改 javascript 以以编程方式附加 dropzone。

     var dz = new Dropzone('#my-awesome-dropzone',{
             url: "fileUploader.php",
             ...
    

    当表单提交时,您必须阻止默认操作(在这种情况下是表单提交。)

     $('#form').on('submit', function(event) {
          if(dz.getQueuedFiles().length > 0) {
               event.preventDefault(); 
               dz.processQueue(); 
          }
           });
    

    现在,您将停止提交表单并处理队列,这会导致“fileUploader.php”脚本运行,您可以使用该脚本来验证文件。

    如果您对文件感到满意,您可以将它们移动到您想要的位置,然后通过将它们存储为数组并回显 json_encode($files) 来返回文件名

    这将在您的 javascript 中为您提供响应,然后您使用 JSON.parse() 函数将其转换为对象。

    现在您有了响应,因此要将文件添加到数据库中,您可以在表单中创建一个具有隐藏属性的额外输入,以便用户看不到它。然后,您可以使用 jQuery 将文件名从您的 javascript 发送到表单中的隐藏输入框。

     $("#hiddenInput").val(files);
    

    如果您对每个文件都这样做,您可以每次都附加隐藏的输入。队列完成后,您可以使用此功能提交表单。

    queuecomplete: function(file) {  
    
     $('#form).submit(); 
     $('#submitButton').click();
    
    },
    

    现在这就像提交普通表单一样,您可以将文件名分解为一个数组并循环将每个文件名添加到您的数据库中

    如果您需要任何额外的帮助,请随时与我联系,因为我的解释不是很好:-)

    【讨论】:

      【解决方案3】:

      <input  type="file" name="file" id="file" />	
          <input type="submit" value="Upload Image" name="submit">
      
          	
      <?php
          $file=$_FILES['file']['name'];
          $dest="uploads/$file";
          $src=$_FILES['file']['tmp_name'];
          move_uploaded_file($src,$dest);
      
          $result=mysql_query("insert into tablename(dbfieldname) values('$dest')");
      ?>

      【讨论】:

        猜你喜欢
        • 2012-07-25
        • 2018-06-19
        • 2021-01-02
        • 1970-01-01
        • 1970-01-01
        • 2017-09-09
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多