Php 添加函数时上载文件不工作
这段代码将文件上载到某个目录。现在我想添加文件名检查器以避免覆盖。Php 添加函数时上载文件不工作,php,Php,这段代码将文件上载到某个目录。现在我想添加文件名检查器以避免覆盖。 我创建了一个函数,如果文件名重复,则返回randomString\u filename,如果不存在重复,则返回准确的文件名。这是用PHP编写的函数: function rnmFile($dir,$flname){ foreach (glob("$dir*.*") as $filename) { if ($filename == $flname){ $characters = '01
我创建了一个函数,如果文件名重复,则返回
randomString\u filename
,如果不存在重复,则返回准确的文件名。这是用PHP编写的函数:
function rnmFile($dir,$flname){
foreach (glob("$dir*.*") as $filename) {
if ($filename == $flname){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < 10; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString.'_'.$flname;
}
else {
return $flname;
}
}
}
其余的也适用。
顺便说一句,这是访问文件上载的代码
<div id="content">
<div id="mulitplefileuploader">Upload!</div>
<div id="status"></div>
<script>
$(document).ready(function()
{
var settings = {
url: "upload_logic.php",
method: "POST",
allowedTypes:"jpg,png,gif,doc,pdf,zip",
fileName: "myfile",
multiple: true,
onSuccess:function(files,data,xhr)
{
$("#status").html("<font color='green'>Upload is success</font>");
},
onError: function(files,status,errMsg)
{
$("#status").html("<font color='red'>Upload is Failed</font>");
}
}
$("#mulitplefileuploader").uploadFile(settings);
});
</script>
</div>
上传!
$(文档).ready(函数()
{
变量设置={
url:“upload_logic.php”,
方法:“张贴”,
允许的类型:“jpg、png、gif、doc、pdf、zip”,
文件名:“myfile”,
多重:对,
onSuccess:函数(文件、数据、xhr)
{
$(“#status”).html(“上传成功”);
},
onError:函数(文件、状态、errMsg)
{
$(“#状态”).html(“上传失败”);
}
}
$(“#mulitplefileuploader”).uploadFile(设置);
});
它还使用jQuery上传插件好的,回答我自己的问题。 变量
$fileName
也可以通过jquery.uploadfile.min.js
访问,因此我利用了它并将其用作变量。我还删除了一些无用的代码,并将glob()
函数替换为file\u exist()
。这就是目前正在运行的代码
<?php
session_start();
$table_name = $_SESSION['un'];
if (!is_dir($table_name)) {
mkdir($table_name);
}
$output_dir = $table_name . '/';
if(isset($_FILES["myfile"]))
{
function rnmFile($dir,$flname){
if (file_exists($dir.$flname)){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < 15; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString.'_'.$flname;
}
else {
return $flname;
}
}
}
$fileName = rnmFile($output_dir,$_FILES["myfile"]["name"]);
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.''.$fileName);
?>
到目前为止,您是如何调试代码的?您是否尝试过编写注释以查看执行过程是如何进行的,或者代码到底在哪里失败?你应该把调试语句放在你怀疑代码可能出错的地方,如果它要求你在代码的每一行都写调试语句,那么你就应该这样做。我添加了echo一些调试代码,但它没有显示出来。我还尝试添加了print\u r
也没有显示错误这很难理解你说的echo some\u for\u进行调试,作为开始,你需要做的是从脚本的顶部到底部打印所有值(至少在你觉得有必要的地方),然后查看“哪个”确切值没有打印,这将给你一个提示problem@XtraCode文件上传似乎不起作用
究竟在哪里不起作用?if(isset($\u FILES[“myfile”])
中的PHP代码是否得到执行?是的,但是当我尝试添加函数时,它不再工作了
<div id="content">
<div id="mulitplefileuploader">Upload!</div>
<div id="status"></div>
<script>
$(document).ready(function()
{
var settings = {
url: "upload_logic.php",
method: "POST",
allowedTypes:"jpg,png,gif,doc,pdf,zip",
fileName: "myfile",
multiple: true,
onSuccess:function(files,data,xhr)
{
$("#status").html("<font color='green'>Upload is success</font>");
},
onError: function(files,status,errMsg)
{
$("#status").html("<font color='red'>Upload is Failed</font>");
}
}
$("#mulitplefileuploader").uploadFile(settings);
});
</script>
</div>
<?php
session_start();
$table_name = $_SESSION['un'];
if (!is_dir($table_name)) {
mkdir($table_name);
}
$output_dir = $table_name . '/';
if(isset($_FILES["myfile"]))
{
function rnmFile($dir,$flname){
if (file_exists($dir.$flname)){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < 15; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString.'_'.$flname;
}
else {
return $flname;
}
}
}
$fileName = rnmFile($output_dir,$_FILES["myfile"]["name"]);
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.''.$fileName);
?>