【发布时间】:2015-03-17 00:31:21
【问题描述】:
现在有点令人困惑的问题。我正在尝试设置一个表单来上传视频。
这是表格:
<form role="form" action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="upload" value="1">
<div class="row">
<div class="col-xs-6">
<span class="btn btn-lg btn-primary btn-block btn-file">
Browse... <input type="file" name="file">
</span>
</div><!-- col-xs-6 -->
<div class="col-xs-6">
<h4 class="feedback-field text-centered">No file selected.</h4>
</div><!-- col-xs-6 -->
</div><!-- row -->
<div class="row">
<h4 class="error-field text-centered"></h4>
</div><!-- row -->
<div class="row">
<div class="col-xs-4"></div>
<div class="col-xs-4">
<input type="submit" name="submit" class="btn btn-primary btn-lg btn-block upload-btn disabled" value="Upload">
</div>
<div class="col-xs-4"></div>
</div>
</form>
这里是upload.php上的相关PHP:
if(isset($_POST['upload'])){
// do things with the file here
} else {
echo "No file found.";
}
不幸的是,这个表单似乎没有将任何文件传递到下一页。
如您所见,表单有一个“enctype”值,这是上传视频时所必需的。但是,当表单具有该值时,它会中断,并且页面“upload.php”将不会收到任何 $_POST 数据(即,它将显示“未找到文件。”消息。当然,没有 enctype , $_FILES 为空。
事情是这样的:我试过改变这个:
if(isset($_POST['upload'])){
到这里:
if(isset($_FILES['file'])){
在这种情况下,我还会收到“未找到文件”。信息。因此,似乎无论表单是否具有“enctype”属性,它都只是拒绝将文件传递给“upload.php”。
有人可以帮我吗?我或多或少迷路了。 Google 并没有为我提供任何好的答案。
编辑:不知何故,这个问题在发布后的几秒钟内就被否决了——比任何人回答它的速度都要快。有人可能想调查这些明显具有欺诈性的反对票。
【问题讨论】:
-
在尝试处理文件上传之前,您没有检查
$_FILES['file']['error']数组是否有错误。您可能会发现 PHP 参数upload_max_filesize和post_max_size限制了允许上传的文件大小,并在错误数组中生成了error code = 1。 -
upload.php与此表单是同一页面吗? -
我现在会检查 RiggsFolly,但请记住,我还检查了是否只有顶级 '$_FILES['file'] 存在,但它不存在。鬼,不,upload.php 是一个新页面。
-
$_FILES['file']['error'] 未设置。 Fred:我看不出这有什么帮助,因为文件甚至没有进入第二页。