php文件上传后不保存

php文件上传后不保存,php,file-upload,Php,File Upload,我在PhP脚本中使用纯文本文件。 有没有办法在PhP脚本中处理文件而不在本地保存?我看到的任何地方都只是上传一个文件并保存它。我只需要从文件中提取一些名字,然后把它处理掉。 如果我使用文件的本地副本,那么其他所有功能都可以正常工作,所以保存它,然后删除它就可以了。我只是想知道是否有一种方法可以跳过保存副本而直接获取信息 我们把文件上传到这里 <html> <body> <form action="test.php" method="post" enctype

我在PhP脚本中使用纯文本文件。 有没有办法在PhP脚本中处理文件而不在本地保存?我看到的任何地方都只是上传一个文件并保存它。我只需要从文件中提取一些名字,然后把它处理掉。 如果我使用文件的本地副本,那么其他所有功能都可以正常工作,所以保存它,然后删除它就可以了。我只是想知道是否有一种方法可以跳过保存副本而直接获取信息

我们把文件上传到这里

<html>
<body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label><input type="file" name="file" id="file" /> <br />
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>

不,它必须保存以供阅读,我的日常程序与你的相同,上传、读取和删除。

你可以使用
$\u文件[“文件”][“tmp\u名称”]
,这将是上传的临时文件。脚本运行完毕后,PHP甚至应该清理并删除临时文件。

提交表单时,请检查
$\u文件['input\u name']['tmp\u name']
属性。这是保存在临时
/tmp
系统路径中的文件路径。您可以继续使用
file\u get\u contents()
读取名称,然后简单地忘记该文件。系统将负责删除它



从其他答案中脱颖而出,从理论上讲,您甚至不用使用JavaScript上传文件就可以读取该文件,请参阅。然后,作为AJAX请求的一部分,只提交所需的数据。

上载文件时,在本地保存之前,它会保存到临时文件中。其位置可通过以下方式访问:

$_FILES['uploadedfile']['tmp_name'] 

您可以选择不保存文件和
fopen()
临时文件,只要您在接收
POST

的同一脚本中执行此操作,文件在读取之前必须保存在某个位置,在这种情况下,文件是临时目录;您可以从临时目录中获取文件的内容,然后如果确实需要删除。请参阅以下代码:

$file = file_get_contents($_FILES["ufiley"]["tmp_name"]);

unlink($_FILES["ufiley"]["tmp_name"]); 

//contents would be stored in $file
如果它的文本文件(假设大小不是那么大)通常你可以通过

$contents= file_get_contents($_FILES['file']['tmp_name']);
如果不确定上传的类型,请检查请求方法

if(strtolower($_SERVER['REQUEST_METHOD'])=='post')
    $contents= file_get_contents($_FILES['file']['tmp_name']);
elseif(strtolower($_SERVER['REQUEST_METHOD'])=='put')
    $contents= file_get_contents("php://input");
else
    $contents="";

无需
unlink()
临时文件AFAIK,因为PHP会在脚本结束时自动执行此操作。@George是的。为了清楚起见,条件看起来是一样的,我想第二次你指的是strtolower($\u SERVER['REQUEST\u METHOD'])=='put'
if(strtolower($_SERVER['REQUEST_METHOD'])=='post')
    $contents= file_get_contents($_FILES['file']['tmp_name']);
elseif(strtolower($_SERVER['REQUEST_METHOD'])=='put')
    $contents= file_get_contents("php://input");
else
    $contents="";