我在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>
并且在脚本中使用本地保存的文件副本,我只需使用
$file = fopen($_FILES['file']['name'], "r");
答案 0 :(得分:19)
如果它的文本文件(假设大小不是那么大)通常你可以通过
来阅读它$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="";
答案 1 :(得分:4)
提交表单后,请检查$_FILES['input_name']['tmp_name']
属性。这是保存在临时/tmp
系统路径中的文件的路径。您可以继续使用file_get_contents()
读取名称,然后忘记该文件。系统将负责将其删除。
只是为了脱离其他答案,理论上你可以在不使用JavaScript上传的情况下阅读文件,请参阅http://www.html5rocks.com/en/tutorials/file/dndfiles/。然后仅提交您在AJAX请求中所需的数据。
答案 2 :(得分:3)
在读取之前必须将文件保存在某处,在这种情况下是临时目录;您可以从临时目录中获取文件的内容,然后如果您确实需要删除。请参阅以下代码:
$file = file_get_contents($_FILES["ufiley"]["tmp_name"]);
unlink($_FILES["ufiley"]["tmp_name"]);
//contents would be stored in $file
答案 3 :(得分:1)
当您上传文件时,在本地保存文件之前,它会被保存到临时文件中。其位置可以通过以下方式访问:
$_FILES['uploadedfile']['tmp_name']
您可以选择不保存文件和fopen()
临时文件,只要您在接收POST
的相同脚本中执行此操作。
答案 4 :(得分:0)
不需要将其保存为afaik,我的常规例程与您的相同,上传,阅读和删除。
答案 5 :(得分:0)
您可以使用$_FILES["file"]["tmp_name"]
这是上传的临时文件。一旦你的脚本运行完毕,PHP甚至应该自行清理并删除临时文件。