【问题标题】:$_FILES['File']['type'] in PHP doesn't work when a file is uploaded from Flash AS3从 Flash AS3 上传文件时,PHP 中的 $_FILES['File']['type'] 不起作用
【发布时间】:2013-10-15 17:34:42
【问题描述】:

我使用此 PHP 代码将音频 (mp3) 文件从 Flash AS3 上传到服务器。它在从 html 表单上传文件时有效,但在从 AS3 端上传文件时无效。当我删除 *$_FILES['Filedata']['type']=='audio/mpeg'* 条件时,它也适用于 AS3。不知道是什么问题。

<?php
if($_FILES['Filedata']['size'] < 500000  &&  $_FILES['Filedata']['type']=='audio/mpeg'){

$uploads_dir = './upload/';
if( $_FILES['Filedata']['error'] == 0 ){
    if( move_uploaded_file( $_FILES['Filedata']['tmp_name'], 
 $uploads_dir.$_FILES['Filedata']['name'] ) ){
        echo 'ok';
        exit();
    }
}
echo 'error';
exit();

}else 
exit();
?>

【问题讨论】:

  • if 语句上方添加echo $_FILES['Filedata']['type'];echo $_FILES['Filedata']['size']; 并查看它的输出。
  • 第二个echo 声明呢?
  • 61380 。问题是文件类型。为什么从html上传文件时它可以正常工作,但从AS3上传时它不起作用。
  • 你应该去掉这个检查,它是不可信的,因为输入$_FILES数组是由客户端发送的。攻击者可以轻松发送audio/mpeg 类型的恶意php 文件并接管您的服务器。您必须在服务器端检查上传的文件,并确保它们以不可执行的形式存储。
  • @dev-null-dweller。感谢您的帮助和建议。

标签: php actionscript-3 flash


【解决方案1】:

您是否使用 html 标准作为 multipart/form-data 上传文件?

如果没有,请参考https://stackoverflow.com/a/1854552/2858188

【讨论】:

猜你喜欢
  • 2011-12-11
  • 2016-05-25
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2016-10-04
  • 2020-03-12
  • 2015-02-22
  • 1970-01-01
相关资源
最近更新 更多