我收到的错误是我的索引在$ _FILES中未定义。我想在我的服务器上用php复制一张图片。
错误:
PHP Notice: Undefined index: bilddatei in C:\inetpub\wwwroot\aufgabe8.php on line 85
PHP Notice: Undefined variable: namefile in C:\inetpub\wwwroot\aufgabe8.php on line 86
我已经尝试过使用isset($ _ FILES [" bilddatei"]),但这也会返回false。
代码:
<?php
session_start();
if (!isset($_SESSION['Datenbank']) and
!isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
// automatisches Zurueckspringen nach 5 Sekunden nach 'index.html':
echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {
echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
<p>Datei von PC hochladen
<input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
</p>
<p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
</form>";
if(isset($_POST["bildBtn"])) {
echo "<p>BILD IF</p>";
$nameFile = $_FILES['bilddatei']['name'];
echo "<p>$namefile</p>";
//copy($fileSource,$destination);
}
你有什么想法吗?谢谢! :-)
答案 0 :(得分:2)
变量名称不同。两个php变量都是case-sensitive
。check $nameFile
&lt; =&gt; $namefile
。
https://www.w3schools.com/php/php_variables.asp
$namefile = $_FILES['bilddatei']['name'];
echo "<p>$namefile</p>";
答案 1 :(得分:1)
我认为这些事情需要单独完成......
渲染表格
if (!isset($_SESSION['Datenbank']) and
!isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
// automatisches Zurueckspringen nach 5 Sekunden nach 'index.html':
echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {
echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
<p>Datei von PC hochladen
<input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
</p>
<p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
</form>";
} ///missing } close I am assuming it goes here
第二个php文件(比如表格动作的aufgabe8.php)
if(isset($_POST["bildBtn"])) {
echo "<p>BILD IF</p>";
$nameFile = $_FILES['bilddatei']['name'];
echo "<p>$nameFile</p>"; //spelling $nameFile is not $namefile
//copy($fileSource,$destination);
}
只是因为你回复表单与提交表格时有很大的不同。您是否理解这一点,代码令人困惑。在任何情况下,它们都是两种不同的行为。
除了另一个答案中提到的拼写错误。
现在你可以在同一个页面中这样做
<?php
session_start();
if (!isset($_SESSION['Datenbank']) and
!isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
// automatisches Zurueckspringen nach 5 Sekunden nach 'index.html':
echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {
if(isset($_POST["bildBtn"])) {
///submitted so process it
echo "<p>BILD IF</p>";
$nameFile = $_FILES['bilddatei']['name'];
echo "<p>$nameFile</p>"; //spelling $nameFile is not $namefile
//copy($fileSource,$destination);
}else{
///not submitted so rendor the form
echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
<p>Datei von PC hochladen
<input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
</p>
<p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
</form>";
}
}
您甚至可以渲染表单,并在同一个块中处理它(没有else
),但只是渲染它并不意味着有人提交了它。在这种情况下,我会取消回声,只使用普通的旧html输出表格。