无需写入文件系统即可直接解析文件上载

时间:2009-09-04 20:04:35

标签: php apache file-upload

使用Apache / PHP5,是否可以直接获取上传文件的内容而无需将其写入文件系统?

谷歌对此并不多,但似乎文件一旦上传就会写入临时目录。

3 个答案:

答案 0 :(得分:4)

不确定我理解你,但我会尽力回答。

http://www.w3schools.com/PHP/php_file_upload.asp

您可以在这里学到的是每个文件都上传到php的临时目录。然后由您的脚本将该文件移动/复制到一个永久的Web可访问目录,因为在脚本结束执行后删除上传到php的临时目录的文件。

答案 1 :(得分:0)

在Linux上,您可以在内存中创建文件系统分区。如果你可以确保上传的文件被写入内存中的分区,如果它将被存储在内存中,但就好像它存储在文件系统中一样,同时制作Apache / PHP5并且你很开心。

问题在于任何解决方案将文件写入内存而不是文件系统需要严格限制文件的大小和数量。你会看到通过避免写入磁盘来提高速度,但如果你使用足够的内存将其他数据推送到页面文件或交换,你的“优化”将很快适得其反。

答案 2 :(得分:0)

你可以:

<?php
if (!empty($_FILES))
{
    echo "<pre>";
    print_r($_FILES);
    echo file_get_contents($_FILES['file']['tmp_name']);
    echo "</pre>";
}
?>
<form id="myForm" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="Send" />
</form>

输出:

Array
(
    [file] => Array
        (
            [name] => mytextfile.txt
            [type] => text/plain
            [tmp_name] => D:\PHP\wamp\tmp\php1283.tmp
            [error] => 0
            [size] => 1473
        )

)
My text file My text file My text file My text file My text file My text file 
My text file My text file My text file My text file 
My text file My text file My text file My text file My text file My text file 
My text file My text file My text file 
My text file My text file My text file My text file My text file 

我不知道它是否受某些php.ini变量的限制。