繁体   English   中英

php FILE POST上传没有保存

[英]php FILE POST upload without save

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

如果它的文本文件(假设大小不是那么大)通常你可以读它

$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="";

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


只是为了脱离其他答案,理论上你可以在不使用JavaScript上传文件的情况下阅读文件,参见http://www.html5rocks.com/en/tutorials/file/dndfiles/ 然后仅提交您需要的数据作为AJAX请求的一部分。

在这种情况下读取文件是临时目录之前,必须将文件保存在某处; 您可以从临时目录中获取文件的内容,然后如果您确实需要删除。 请参阅以下代码:

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

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

//contents would be stored in $file

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

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

您可以选择不保存文件和fopen()临时文件,只要您在收到POST的同一脚本中执行此操作即可。

不,它必须保存才能被读取,我通常的常规与你的相同,上传,阅读和删除。

你可以使用$_FILES["file"]["tmp_name"] ,这将是上传的临时文件。 一旦脚本运行完毕,PHP甚至应该自行清理并删除临时文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM