文件上传程序上传文件,但显示错误


File uploader uploading files but displaying error

我的代码

我有这个多部分形式:

<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file"><span>Select:</span></label>
<input type="file" name="file" id="file"> 
<br>
Password: <input type="password" name="password"><br>
<input type="submit" name="submit" value="Upload">
</form>

指向这个文件:

<?php
$allowedExts = array("mp4", "avi","mpeg","wmv","swf","3gp","AVI");
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($extension, $allowedExts) || $_FILES['file']['error']>0  || file_exists(date("YmdHis").$_FILES["file"]["name"]))
{  
   echo "Error [code: ".$_FILES['file']['error']."]";
} else {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      date("YmdHis").$_FILES["file"]["name"]);
      echo 'file uploaded'; 
}
?>

它应该做什么

上传视频文件

什么不工作

我尝试上传一个大约300kb的。avi视频:它被上传了,但是显示错误信息" error [code:]"

error_reporting(E_ALL);结果

注意:未定义的索引:文件在upload.php的第5行
注意:未定义的索引:file in upload.php在第8行

var_dump($_POST,$_FILES);的结果(password字段为空)

array(0) { } array(0) { } 

"<pre>"; print_r($_FILES);结果

Array ( )

Where I try code

  • 本地服务器运行easyPHP, php版本5.5.8
  • 共享服务器,php版本5.3.10

我的问题

如何正确显示成功信息并解决问题?

我已经在PHP 5.3.18上运行了您的代码。windows XP。假设满足上传限制。我能找到的唯一问题是,在移动文件时,您从"目标文件名"中错过了"目标"目录。

测试样例代码:

<?php // http://stackoverflow.com/questions/25115575/file-uploader-uploading-files-but-displaying-error?noredirect=1#comment39103445_25115575
$destDir = 'P:/temp/';
$allowedExts = array("mp4", "avi","mpeg","wmv","swf","3gp","avi");
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($extension, $allowedExts) || $_FILES['file']['error']>0  || file_exists(date("YmdHis").$_FILES["file"]["name"]))
{
   echo "Error [code: ".$_FILES['file']['error']."]";
} else {
      $newFilename = $destDir . date("YmdHis").$_FILES["file"]["name"];
      move_uploaded_file($_FILES["file"]["tmp_name"],
      $newFilename);
      echo 'file uploaded : ', $newFilename;
}

由于文件大小的原因。-

; Maximum allowed size for uploaded files.
upload_max_filesize = allowed max size
; Must be greater than or equal to upload_max_filesize
post_max_size = allowed max size

- PHP修改最大上传文件大小