php - $_Files 在 php 8 上传新手问题中为空
问题描述
我正在尝试学习一点 php 和 html。今天我做了我的第一次文件上传。但是数组 $_FILES 接缝为空/空。如果我尝试访问它,我会收到一个错误,即找不到我的密钥。
apache日志接缝正常:
192.168.1.79 - - [26/May/2021:13:36:13 +0000] "GET /buchdemo/hochladen.php?upfile=test.txt&hochladen=Senden HTTP/1.1" 200 565 "http://192.168.1.96/buchdemo/hochladen.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15"
但是PHP代码没有进入第一个if
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2> Upload </h2>
<?php
if (!empty($_FILES))
{
if (count($_FILES)>0)
{
for ($i=0; $i<count($_FILES); $i++)
{
echo $i ."<br>";
echo $_FILES[$i];
}
}
else
{
echo "keine Daten";
}
if ($_FILES["upfile"]["size"]>0)
{
echo '$_FILES["upfile"]["tmp_name"]';
$info = $_FILES["upfile"]["tmp_name"];
copy($_FILES["upfile"]["tmp_name"], $info);
}
}
?>
<form action="hochladen.php" action="post" enctype="multipart/form-data">
<p> <input name="upfile" type="file"></p>
<p> <input type="submit" name="hochladen"></p><br>
</form>
</body>
</html>
解决方案
正如 Musa 所指出的,您需要将表单方法设置为 POST。现在您正在设置要发布的操作。
action 属性定义了表单提交时表单数据的发送位置。
method 属性定义了表单数据的发送方式。
要在 PHP 中上传文件,您需要使用 POST 或 PUT 方法(https://www.php.net/manual/en/features.file-upload.post-method.php)
所以代码应该是:
<form action="hochladen.php" method="post" enctype="multipart/form-data">
<p> <input name="upfile" type="file"></p>
<p> <input type="submit" name="hochladen"></p><br>
</form>
推荐阅读
- javascript - 使用js填充具有信用卡格式的输入字段
- javascript - async.waterfall TypeError:回调不是函数(复杂函数)
- github - 构建一个 CircleCI 管道测试 3 个相关项目
- keras - 为什么我的训练损失和验证损失减少了,但训练准确度和验证准确度却一点也没有增加?
- css - Next.JS 应用程序(带有 Chakra UI)在移动设备上不是全宽
- javascript - 如何使用 JavaScript 在 Evernote 网页编辑器 iframe 上禁用原始单词拖放?
- c - Gtk3 - 如何在当前目录中找到图像?(gtk_image_new_from_file) (我用的是 C)
- javascript - Square Web Payments JavaScript SDK 将卡片保存在文件中
- skype-for-business - 使用 UCMA 6.0 SDK 的 Skype for Business 客户端(端点)应用程序在移植时不会记录呼叫。“由于 I/O 错误,录像机无法启动。”
- sql - 大查询时间范围