PHP-从上载客户端文件到PHP将其保存在tmp文件中的点的过程是什么
从将客户端文件上载到服务器,到PHP将上载的文件保存到tmp文件,会发生什么过程 即从这一点(文件上传表单): 如果没有将文件内容读入内存,如何在不将任何文件内容读入内存的情况下对其进行解析?在创建另一个临时文件时是否使用了硬盘空间,该临时文件的作用类似于解析它的内存PHP-从上载客户端文件到PHP将其保存在tmp文件中的点的过程是什么,php,file-upload,Php,File Upload,从将客户端文件上载到服务器,到PHP将上载的文件保存到tmp文件,会发生什么过程 即从这一点(文件上传表单): 如果没有将文件内容读入内存,如何在不将任何文件内容读入内存的情况下对其进行解析?在创建另一个临时文件时是否使用了硬盘空间,该临时文件的作用类似于解析它的内存 如果将文件内容读入内存,那么如何处理大型文件,例如,如果上载的文件大小为10GB,但内存仅为2GB?您不需要将完整的数据流读入内存来解析它。在这种情况下,PHP甚至不需要理解实际的附件代码:它所要做的就是将其转储到一个临时文件中。
如果将文件内容读入内存,那么如何处理大型文件,例如,如果上载的文件大小为10GB,但内存仅为2GB?您不需要将完整的数据流读入内存来解析它。在这种情况下,PHP甚至不需要理解实际的附件代码:它所要做的就是将其转储到一个临时文件中。您可以将这个过程设计为使用几乎尽可能少的内存,用它来换取I/O和CPU周期 我不知道C代码的实际实现,但我记得在学校里,我在a的帮助下编写了一个简单的解析器,用简单的英语,它是一组布尔变量,告诉你在哪里(状态),并随着你不断阅读更多的输入而更新。我可以设想一个文件上传解析器,它以块的形式读取输入套接字:
- 当它找到
边界时,它可以确定有一个新的POST字段------------------------------------735323031399963166993862150
- 当
标题中有内容处置
属性时,它可以确定字段是文件文件名
- 它可以确定文件在标题后面有空行时启动,并创建一个临时文件
- 它可以一直将输入附加到临时文件,直到再次找到边界
等等。您无需将完整的数据流读入内存即可对其进行解析。在这种情况下,PHP甚至不需要理解实际的附件代码:它所要做的就是将其转储到一个临时文件中。您可以将这个过程设计为使用几乎尽可能少的内存,用它来换取I/O和CPU周期 我不知道C代码的实际实现,但我记得在学校里,我在a的帮助下编写了一个简单的解析器,用简单的英语,它是一组布尔变量,告诉你在哪里(状态),并随着你不断阅读更多的输入而更新。我可以设想一个文件上传解析器,它以块的形式读取输入套接字:
- 当它找到
边界时,它可以确定有一个新的POST字段------------------------------------735323031399963166993862150
- 当
标题中有内容处置
属性时,它可以确定字段是文件文件名
- 它可以确定文件在标题后面有空行时启动,并创建一个临时文件
- 它可以一直将输入附加到临时文件,直到再次找到边界
<!doctype html>
<html>
<h1>Upload new File</h1>
<form method="post enctype=multipart/form-data" action="example.php">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</html>
<?php
$filePath = $_FILES['file']['tmp_name']
POST / HTTP/1.1
[[ Less interesting headers ... ]]
Content-Type: multipart/form-data; boundary=---------------------------735323031399963166993862150
Content-Length: 834
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text1"
text default...
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file1"; filename="a.txt"
Content-Type: text/plain
Content of a.txt...
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html><title>Content of a.html.</title>