【发布时间】:2009-09-04 20:04:34
【问题描述】:
使用 Apache/PHP5,是否可以直接获取上传文件的内容而不将其写入文件系统?
在 Google 上没有太多关于此的内容,但似乎文件在上传后总是被写入临时目录。
【问题讨论】:
标签: php apache file-upload
使用 Apache/PHP5,是否可以直接获取上传文件的内容而不将其写入文件系统?
在 Google 上没有太多关于此的内容,但似乎文件在上传后总是被写入临时目录。
【问题讨论】:
标签: php apache file-upload
不确定我是否理解你,但我会尽力回答。
http://www.w3schools.com/PHP/php_file_upload.asp
你可以在这里学到的是,每个文件都被上传到 php 的 temp 目录。然后由您的脚本将该文件移动/复制到某个永久的 Web 可访问目录,因为在脚本结束执行后,上传到 php 的临时目录的文件将被删除。
【讨论】:
在 Linux 上,您可以在内存中创建文件系统分区。如果你能确保上传的文件写入内存中的分区,if会被存储在内存中,但就像存储在文件系统中一样,让Apache/PHP5和你都开心。
问题在于,将文件写入内存而不是文件系统的任何解决方案都需要严格限制文件的大小和数量。通过避免写入磁盘,您会看到速度提升,但如果您使用足够的内存将其他数据推送到页面文件或交换中,您的“优化”将很快适得其反。
【讨论】:
你可以:
<?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变量限制了。
【讨论】: