Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:在文件中转换ressource流_Php_Html_File - Fatal编程技术网

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”