php:在文件中转换ressource流
php:在文件中转换ressource流,php,html,file,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(
当我在从数据库获取的文件路径上使用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)"*/
?>
但是我需要我的项目我需要一个$u文件类型。。。我可以将ressource流转换为$\u文件类型吗?
$\u文件
不是一种“类型”,它只是一个数组,其中包含有关上载文件的某些信息。首先,如果您有一些硬编码的代码要使用$\u文件
,您可能应该将其更改为接受通用参数。意思是,而不是:
function foo() {
echo $_FILES['tmp_name']:
}
将其改写为:
function foo($path) {
echo $path;
}
然后,您可以调用该函数,并从任何地方将其传递给任何路径。在您的情况下,您应该按原样传递它$line['filepath']
。您不需要fopen
it,因为这样您就得到了一个资源,而您当前只需要一个路径
如果需要“伪造”$\u文件
数组,则需要手动构造它:
$_FILES['foo']['name'] = '..';
$_FILES['foo']['type'] = '..';
$_FILES['foo']['size'] = '..';
$_FILES['foo']['tmp_name'] = $line['filepath'];
$_FILES['foo']['error'] = UPLOAD_ERR_OK;
但同样,您可能希望更改硬编码的任何代码,以使用
$\u文件
,而不是这种破解方法。什么是“$\u文件”类型。。。?你在哪里需要这个?$\u文件是文件获取事实上,我的代码的另一部分,我使用文件。但现在我需要对数据库中的文件做同样的事情。所以我需要修改“文件”中的“类型流的ressource”