php:转换文件

时间:2016-02-25 10:51:09

标签: php html file


当我在数据库中使用fopen时,我得到了一个ressource流:

<?php
$query = "SELECT filepath
          FROM files
          WHERE id=123";
$result = do_query($query);
/*do_query() is a personal simplification*/
$line   = mysql_fetch_array($result);
$file   =   fopen($line['filepath'], 'r');
/*var_dump on file return "resource(51) of type (stream)"*/
?>

但是我的项目我需要$ _FILE类型...我可以转换$ _FILE类型的资源流吗?

1 个答案:

答案 0 :(得分:1)

$_FILES不是“类型”,它只是一个包含有关上传文件的某些信息的数组。首先,如果你有一些代码硬编码使用$_FILES,你应该改为接受一个通用参数。意思是,而不是:

function foo() {
    echo $_FILES['tmp_name']:
}

将其重写为:

function foo($path) {
    echo $path;
}

然后,您可以调用该函数并从任何位置传递任何路径。在你的情况下,你按原样传递$line['filepath']。你不需要fopen它,因为当你只是想要一条路径时,你会得到一个资源。

如果您需要“伪造”$_FILES数组,则需要手动构建它:

$_FILES['foo']['name'] = '..';
$_FILES['foo']['type'] = '..';
$_FILES['foo']['size'] = '..';
$_FILES['foo']['tmp_name'] = $line['filepath'];
$_FILES['foo']['error'] = UPLOAD_ERR_OK;

但同样,您可能希望更改硬编码的任何代码以使用$_FILES而不是此hackaround。