Php move#u uploaded_file()无法使用有效的[';tmp#u名称';]
这使我困惑。出于某种奇怪的原因,move_uploaded_file()不会将文件放入目录,但它会返回一个有效的tmp_名称和名称。因此,在本例中,$file始终=为false 不管怎样,有人能指出这个代码的一些问题吗?我们将不胜感激Php move#u uploaded_file()无法使用有效的[';tmp#u名称';],php,mysql,Php,Mysql,这使我困惑。出于某种奇怪的原因,move_uploaded_file()不会将文件放入目录,但它会返回一个有效的tmp_名称和名称。因此,在本例中,$file始终=为false 不管怎样,有人能指出这个代码的一些问题吗?我们将不胜感激 <?php include 'realtydevkit.php'; session_start(); $name = $_FILES['yourlogo']['name']; $tmpname = $_FILES['yourlogo']['tmp_n
<?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];
if ($name) {
$directory = $name;
$userid = $_SESSION['userid'];
$type = "logo";
$file = move_uploaded_file($tmpname, $directory);
if ($file == true) {
mysql_query("INSERT INTO usercontent
(`userid`, `type`, `url`) VALUES
('$userid', '$type', '$directory')");
echo 'Uploaded';
echo "<img src='".$directory."'/>";
} else {
echo 'There was an error moving the file.';
}
}
?>
您也没有检查$\u文件['yourlogo']['error']
以下是您使用上载的文件检查的内容:
检查$\u文件['yourlogo']['error']
。如果是UPLOAD\u ERR\u OK
(0),则继续
检查是否上传了文件($\u文件['yourlogo']['tmp\u name'])
。如果失败,PHP不知道出了什么问题,但它不信任该文件
组装目标路径
使用移动上传的文件()
如果move\u upload\u file()
出错,则PHP无法在目标位置写入文件。这通常是无效路径或没有权限
请注意,$\u FILES['yourlogo']['name']
是上传者电脑上的文件名。它不应该有任何路径信息。
<?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];
if ($name) {
$directory = $name;
$userid = $_SESSION['userid'];
$type = "logo";
$file = move_uploaded_file($tmpname, "path of ur directore/".$directory);
if ($file == true) {
mysql_query("INSERT INTO usercontent
(`userid`, `type`, `url`) VALUES
('$userid', '$type', '$directory')");
echo 'Uploaded';
echo "<img src='".$directory."'/>";
}
else
{
echo 'There was an error moving the file.';
}
}
?>
您的目的地只是一个文件名,路径如何。注意:$directory
易受SQL注入攻击<代码>$directory=mysql\u real\u escape\u字符串($name)
还要注意,您不能将直接未筛选的$name
用作移动上传的文件()的目标文件名。这将为您打开一个巨大的窗口,允许用户将文件写入文件系统中的多个位置。我只是想让它先起作用。因为问题的关键是为什么文件没有出现在目录中。并且不需要在@Dagon中指定路径。这个名称就足够了,因为它将出现在同一个文件夹中。这是在不同的服务器上使用完全相同的代码,工作非常好。(在此服务器上不工作)好的,很有帮助,但UPLOAD_ERR_OK显示为0,tmp_名称在我回显时出现,并且,目标路径是正确的,因为它可以是名称和根文件夹。如果它与权限有关,如何允许访问?这是一条有效的路径,所以。。。我正在使用CENTOS和Parallels Plesk与PHP和MySQLIt,它需要指向web服务器可以写入的目录。另外,尝试ini\u集(“显示错误”,1)代码>在脚本的早期。您可能没有看到它试图显示的错误。请看,是的,但是,$name是根目录,可以在另一台服务器上使用此代码。如何特别指出web服务器可以写入的目录。如果现有web服务器可以正常写入根目录(/
),则现有web服务器已严重损坏。我并不奇怪这在你的新服务器上不起作用。要使函数正常工作,只需在$name
前面预先添加一个有效目录/tmp
如果您没有更好的位置可立即使用,则可以使用。