【问题标题】:HTML Form only uploads certain filesHTML 表单仅上传某些文件
【发布时间】:2013-07-04 08:24:00
【问题描述】:

我正在创建一个网站,允许用户上传他们想要的任何媒体文件(图像、视频和音频文件)。然而,页面实际允许我上传的内容似乎很随机。表单在HTML,recieveFile 脚本在PHP。

我的 HTML 表单如下所示:

<form action="recieveFile.php?id=0" method="POST" enctype="multipart/form-data">
 <input type="file" name="media" value="Choose file"/>
 <br/><input type="submit" value="Upload"/>
</form>

我的 PHP Recieve 脚本如下所示:

if (isset($_FILES['media']))
{
  saveFileFunctions();
}
else
{
  echo "No media files were uploaded!";
}

现在每次上传图片时,我都会进入 saveFileFunctions。它也适用于 .txt 和 .pdf。但是,每当我尝试使用 .mov 或 .mp4 文件时,它都会直接将我带到最后一个回显,就好像 $_FILES['media'] 是空的一样。有人知道为什么我的表单似乎只发送某些文件吗?

【问题讨论】:

  • 我认为文件大小超过了max_file_upload_size设置。
  • 尝试检查$_FILES['file']['error'] 见php.net
  • 如果文件大小超过 2M 左右,则不会设置 $_FILES['file']。我将php5/apache/php.ini 更改为max_upload_size = 50M,但它仍然只接受较小的文件。
  • 上传2MB到10MB左右的文件还有一个问题,它会设置$_FILES['media'],但不是tmp_name参数,但我仍然可以找到文件的扩展名。现在很迷茫。

标签: php html


【解决方案1】:

您可能超出了允许上传文件的最大文件大小。您需要在 php.ini 中更改它:

; Maximum allowed size for uploaded files.
upload_max_filesize = 20M

; Must be greater than or equal to upload_max_filesize
post_max_size = 20M

您也可以在程序运行时这样做

ini_set('post_max_size', '20M');
ini_set('upload_max_filesize', '20M');

或在 .htaccess 文件中:

php_value upload_max_filesize 20M
php_value post_max_size 20M

【讨论】:

  • 我尝试了ini_set并将其设置为50M,但仍然没有。它运行良好,无需在我的上一台服务器上执行任何操作,但我认为您对文件大小的看法是正确的,似乎是相关的。
  • 尝试检查 $_FILES['file']['error'] - 正如@James Birkett 所建议的那样
  • 我尝试更改 php.ini 文件,以便我可以处理高达 50MB 的文件大小,但我的 php 似乎没有得到 $_FILES['media'],除非文件大小小于 2MB。
  • @Tom 你有机会发布你的php.ini吗?
  • 不确定这是否安全,没有过多地摆弄那部分。但它说:post_max_size = 75M,upload_max_filesize = 50M,max_file_uploads = 20,file_uploads = on,;upload_tmp_dir =(注意:最后一点被注释掉了)
猜你喜欢
  • 2016-05-01
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多