PHP:如何从文件夹文件名中读取并在Java脚本数组中加载此文件名?

时间:2015-06-20 06:41:36

标签: javascript php jquery ajax

我在子文件夹中有一些图像文件。我想在复制操作之前和之后获取文件名以了解新文件名。

这个新文件名(不是文件,只有名称和扩展名)需要保存在我的MySQL数据库的数据字段中。

在此数据字段中,始终保存所有图片的文件名,这些文件名属于当前记录。

我在考虑四种方式:

1)如果可能的话,通过jQuery读取文件名。然后通过Ajax将数据保存到MySQL。

2)通过PHP读取文件名,结果应该发送到Javascript数组,我可以将数据保存在MySQL字段中。它与选项1)几乎相同。

3)如果可能,请阅读PHP中的文件名,并将其直接保存在PHP的表格字段中。

4)在multifileuploader函数中读取另一个javascript数组中的文件名,我可以启动另一个ajax动作来用它填充MySQl数据字段。

如果我在主操作之前添加另一个代码,我仍然不明白为什么PHP会立即丢失数据。这很奇怪。

因为那样会更容易。只需在upload.php成功后执行,MySQL动作将上传文件名(它们无论如何都在这个PHP数组中)保存到MySQL数据库。

我在文件操作中使用来自其他人的公共代码。

以下是保存此文件的代码:

档案body_editarticles.php

    <?php session_start();

        $_db_host = "myserver.com:3306";
        $_db_username = "admin0";
        $_db_passwort = "star1dgffh";
        $_db_datenbank = "sob";
        $_db_currentID ="";

        $_link = mysql_connect($_db_host, $_db_username, $_db_passwort);

        if (!$_link)
        {
            die("No Connection to the database: " .
                mysql_error());
        }

        mysql_select_db($_db_datenbank, $_link);

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

    <head>

        <meta charset="UTF-8" />

        <link rel="stylesheet" type="text/css" href="css/style.css">

        <script type="text/javascript" src="js/scroll.js"></script>

        <script type="text/javascript" src="js/jquery.js" ></script>

        <script type="text/javascript" src="js/jquery.uploadfile.min.js"></script>


    </head>

    <body class="page page-id-11505 page-template-default" onload="jsRecordCurrent();">

    <div id="page-wrap">

    <?php
    include('includes/header.html');
    ?>

    <div id="hiddenID" style="display: none;"></div>


    <div id="mulitplefileuploader" title="">
        <br>
        Upload
    </div>
    <div id="status"></div>

        <script>

        $(document).ready(function()
        {

            var settings = {
                url: "upload.php",
                method: "POST",
                allowedTypes:"jpg,png,gif",
                fileName: "myfile",
                multiple: true,
                onSuccess:function(files,data,xhr)
                {
                    $("#status").html("<font color='green'>Upload successful</font>");
                },
                onError: function(files,status,errMsg)
                {
                    $("#status").html("<font color='red'>Upload failed</font>");
                }
            }
            $("#mulitplefileuploader").uploadFile(settings);

        });

        </script>

    </div>

    </div>

    </div>

        <div id="aside">

        </div>

        <br class="clearfloat" />
    </div> <!-- End of main container -->

    </div><!-- END Page Wrap -->

    <div id="footer">
        <br class="clearfloat" />

    </div>

    </body>

    </html>

file&#34; upload.php&#34;

    <?php

    //If directory doesnot exists create it.
    $output_dir = "sobimages/";

    if(isset($_FILES["myfile"]))
    {
        $ret = array();

        $error =$_FILES["myfile"]["error"];
        {

            if(!is_array($_FILES["myfile"]['name'])) //single file
            {
                $fileName = $_FILES["myfile"]["name"];
                move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir. $_FILES["myfile"]["name"]);
                //echo "<br> Error: ".$_FILES["myfile"]["error"];

                $ret[$fileName]= $output_dir.$fileName;
            }
            else
            {
                $fileCount = count($_FILES["myfile"]['name']);
                for($i=0; $i < $fileCount; $i++)
                {
                    $fileName = $_FILES["myfile"]["name"][$i];
                    $ret[$fileName]= $output_dir.$fileName;
                    move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName );
                }

            }
        }
        echo json_encode($ret);

    }

2 个答案:

答案 0 :(得分:0)

快速建议您的主题

PHP

      bTitle = bookForm.txtTitle.value;
      bName = bookForm.txtName.value;
      bNumber = bookForm.txtNumber.value;

      var concatBook = ""+bTitle+" by "+bName+" sold "+bNumber+" Copies.";
      $('#mytext').val(concatBook);  //this will display result in textarea
      $('#mytext').css('font-style', 'italic');

jquery的

$files = scandir('/files');
die(json_encode($files));

答案 1 :(得分:0)

对于您可以使用$_FILES['myfile']['name']的预先文件名,这将为您提供原始文件名,因为它将显示在客户端系统的文件夹中,就像移动后一样,除非您更改名称,否则它们将是同样,但您也可以遍历目录并吐出数据。

<?php
// Define the filepath
$strOutputDirectory = dirname(__FILE__).DIRECTORY_SEPARATOR.'sobimages';
// Define a filename placeholder
$arrFiles = [];
// Iterate over the directory
foreach (new DirectoryIterator($strOutputDirectory) as $dirEntity) {
    // Check for a file
    if ($dirEntity->isFile()) {
        array_push($arrFiles, $dirEntity->getFilename());
    }
}
// Return the JSON
echo json_encode($arrFiles);

jQuery.getJSON('/path/to/file.php', function(arrFile) {
    // Log the output
    console.log(arrFiles);
});

有关目录迭代的更多信息,请参阅:PHP: DirectoryIterator