【发布时间】:2014-03-14 19:10:43
【问题描述】:
有没有办法让 PHP 捕获正在上传(POST)的文件,以便 PHP 可以在文件写入磁盘之前对其进行操作?
示例应用程序:用户可以将文件上传到我的 Web 应用程序的表单,我的应用程序在将文件写入磁盘之前使用 PGP 对其进行加密。
【问题讨论】:
标签: php file-upload file-io
有没有办法让 PHP 捕获正在上传(POST)的文件,以便 PHP 可以在文件写入磁盘之前对其进行操作?
示例应用程序:用户可以将文件上传到我的 Web 应用程序的表单,我的应用程序在将文件写入磁盘之前使用 PGP 对其进行加密。
【问题讨论】:
标签: php file-upload file-io
上传的文件会被 PHP 存储为临时文件,直到您对其进行操作(请参阅http://www.php.net/manual/en/features.file-upload.post-method.php)。您可以使用 INI 设置来控制文件的存储位置,但在将它们写入临时位置之前,您无法真正拦截它们。
您当然可以在将文件移动到最终位置之前对其进行 PGP 加密。
【讨论】:
根据您在前端使用的库,应该可以对文件进行 base64 编码,然后将其作为常规 post 数据发送到 PHP,从而避免将文件写入磁盘。当然,这会增加开销,并且您最终会以这种方式通过网络发送更多数据。但是,它可以工作(我已经做到了,但由于额外的带宽使用而放弃了这个想法)。
您的后端需要正确解码数据并从那里进行处理。如果您这样做,我建议您将数据分块,这样您就可以重试失败的部分,而无需再次上传整个文件。
【讨论】: