我在子文件夹中有一些图像文件。我想在复制操作之前和之后获取文件名以了解新文件名。
这个新文件名(不是文件,只有名称和扩展名)需要保存在我的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);
}
答案 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