捕获文件,发送到PHP而不写入磁盘

时间:2014-03-14 19:10:43

标签: php file-upload file-io

有没有办法让PHP捕获正在上传的文件(POST),以便PHP可以在将文件写入磁盘之前对其进行操作?

示例应用程序:用户可以将文件上传到我的Web应用程序的表单,我的应用程序在将PGP写入磁盘之前使用PGP对其进行加密。

2 个答案:

答案 0 :(得分:0)

上传的文件由PHP存储为临时文件,直到您操作它们为止(请参阅http://www.php.net/manual/en/features.file-upload.post-method.php)。您可以使用INI设置来控制文件的存储位置,但在将它们写入临时位置之前,您无法真正拦截它们。

在将文件移动到最终位置之前,您当然可以对PGP进行加密。

答案 1 :(得分:0)

根据您在前端使用的库,应该可以对文件进行base64编码,然后将其作为常规发布数据发送到PHP,从而避免将文件写入磁盘。当然,会有额外的开销,你最终会以这种方式通过网络发送更多数据。但是,它可以工作(我已经完成了,但由于额外的带宽使用而废弃了这个想法)。

您的后端需要正确解码数据并从那里处理。如果您这样做,我建议您对数据进行分块,这样您就可以重新尝试失败的部分,而无需再次上传整个文件。