php FILE POST上传没有保存

时间:2012-02-01 18:16:37

标签: php file-upload

我在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");

6 个答案:

答案 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甚至应该自行清理并删除临时文件。