【发布时间】:2013-07-09 17:09:55
【问题描述】:
我在这里遇到了一个小问题。我使用以下表单允许用户上传一个或多个文件:
<form action="RejoinReq.php" method="post" enctype="multipart/form-data">
Attachment 1: <input type="file" name="file[]" id="file" maxlength="500" accept="application/pdf,image/*" />
<input type="submit" name="submit" value="Request" />
</form>
接下来,我需要重命名文件,然后再将它们保存到服务器。为此,我正在尝试使用:
RejoinReq.php
<?php
function findexts ($filename) {
$filename = strtolower($filename);
$exts = explode(".", $_FILES["file"]["name"]);
$n = count($exts) - 1;
$exts = $exts[$n];
return $exts;
}
$ext = findexts($_FILES['file']['name']);
$target = "upload/";
$target = $target . $_SESSION['myusername'] . "Rejoin." . $ext;
if (file_exists("upload/" . $_FILES["file"]["name"])) {
//echo $_FILES["file"]["name"] . " already exists. ";
}
else {
move_uploaded_file($_FILES["file"]["tmp_name"],$target);
//echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
更新 - 修改 PHP 代码
警告:
findexts()期望参数 1 是字符串,给定数组警告:
move_uploaded_file()期望参数 1 是字符串,给定数组
【问题讨论】:
-
首先,您的代码中无需大写所有内容。那个烦人。另外,尝试使用
file input的multiple属性 -
这不是全部,但无论如何我更新了我的代码,很抱歉打扰你,现在我在我的代码中添加了
multiple="muliple",仍然是同样的错误。 -
如果
$_FILES["file"]不是 empy,该代码将适用于 1 个循环(请先检查)。另外:不要在循环中定义函数,并使其findexts($name),并让它使用它的参数而不是$_FILES再次超全局.. -
“对JS代码的修改”..但是JavaScript代码在哪里??
-
您的
findext()函数完全没用且多余。请改用pathinfo($filename, PATHINFO_EXTENSION)。
标签: php file-upload