【发布时间】:2016-11-25 00:04:03
【问题描述】:
我有一个大学项目的问题,我们要创建图书注册表。到目前为止一切顺利,但是,我们有一个用于插入书籍封面的部分。无论如何都试过了,文件没有发送。我创建了一个新目录来测试,它也没有工作。按照代码:
<form enctype="multipart/form-data" method="post" action="index.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="cover"/>
<input type="submit" name="insert" class="btn btn-primary" value="Insert Data">
</form>
<?php
if(isset($_POST['insert'])):
$destiny = '/' . $_FILES['cover']['name'];
$tmp_file = $_FILES['cover']['tmp_name'];
move_uploaded_file( $tmp_file, $destiny);
var_dump($_FILES);
endif;
?>
当你点击提交而不选择任何文件时,它通常会落入 IF。但是,当提交文件并单击提交时,没有任何反应。只有页面被重新加载。已尝试输入正确的 $destiny 并继续相同的操作。
编辑:
我收到以下错误:
警告:3724451 字节的 POST 内容长度超出了 Unknown on line 0 中 3145728 字节的限制
【问题讨论】:
-
$_FILES 包含有关已上传文件的大量元数据,包括出错时的错误代码。 php.net/manual/en/features.file-upload.errors.php 还启用错误报告和/或日志记录,如果有任何显示,请将其包含在问题中。
-
顺便说一句,您似乎在没有任何验证的情况下信任用户输入。这是一个坏主意。例如,我可以制作一个 POST,将文件名设置为 ../../../../../../../../../../../.. /../../etc/passwd 并丢弃你的系统(如果 /etc/passwd 也恰好是全局可写的)
-
@GordonM 这实际上不是我真正的项目。我创建了一个新文件夹只是为了测试东西,就是上面的代码。
-
$destiny 是绝对路径:以“/”开头。您没有在根文件夹中写入的权限。 move_uploaded_file 返回一个 bool 。也可以查看操作是否成功。
标签: php html file-upload