php在移动到另一个文件夹之前,从tmp文件夹中操作上传的图像/文件

时间:2010-09-04 11:32:13

标签: php image-manipulation

我一直在以通常的方式上传后操作图像文件,例如将文件从/ tmp文件夹移动到网站的首选文件夹。

现在我想通过将图像保存在临时文件夹中来操作图像,一旦我完成它,然后我想将它移动到首选文件夹。

我想做的是......

  1. 显示一个非常简单的自定义文件上传对话框。
  2. 选择图片并点击上传。
  3. 表单已提交给iframe,因此我可以显示进度条。
  4. php脚本将回显javascript代码,该代码将从iframe调用父窗口函数以通知图像已上载。
  5. 我想显示另一个对话框,该对话框将显示tmp文件夹中的图像,以便用户可以调整大小并裁剪。
  6. 当用户选择要裁剪的图像上的区域时,我会将坐标发送到服务器并操纵tmp文件夹中的图像。
  7. 完成图像处理后,我希望将最终图像移动到目标文件夹。
  8. 这是我的疑惑。

    1. tmp文件夹中的临时图像有多长。
    2. 如何在对话框的临时文件夹中显示图像,因为我只有物理路径。
    3. 我想我可以像<img src='fetchfromtmp.php?filename>那样做。不是吗?
    4. 在php脚本中我可以读取文件,如readfile('tmp / tmpfile')。

      那么,最后,会从temp文件夹中操纵好吗?它会有效/暗示吗?可能是什么并发症?如果有的话。

      我想为我的想法提供建议和替代方案。 谢谢。

5 个答案:

答案 0 :(得分:1)

简短的回答是,这不是一个好主意。 tmp文件夹中的文件可以在没有您干预的情况下删除,因此将它们移动到您自己的应用程序内的临时文件夹,在那里进行处理,一旦完成,将其移动到最终位置。

答案 1 :(得分:1)

  • 图像将位于tmp文件夹中,直至删除。您的主机可能会定期清除它,但可能不会,所以除非您将其删除,否则它将保留在那里。
  • 为了显示tmp文件夹中的图像,您必须使用脚本读取它并提供它(或使用X-Sendfile)。
  • PHP可以从tmp目录中读取而没有任何问题

但是,您可以通过在上传后将图像移动到应用程序中的tmp目录来解决所有这些问题。这样你知道它不会被删除,你可以轻松地将它提供给用户,你知道你将能够读取该文件。

或者,如果您可以访问php.ini文件,则可以更改upload_tmp_dir并将图像上传到应用程序中的tmp目录。

答案 2 :(得分:1)

我认为您不应该像这样使用临时文件夹,遗憾的是,您必须创建自己的(或使用数据库来存储图像)。原因是你的观点1&amp; 2:

  1. 只保证图片保留在临时文件夹中,直到上传的图片完成运行。这意味着您的表单提交的任何脚本都应该将其移动到安全的地方
  2. 通常,此临时文件夹将位于用户不可见的位置。你可以破解你建议的东西,但是你必须非常确定你正在做些什么来避免造成任何安全漏洞。

答案 3 :(得分:1)

docs对此非常清楚

  

如果文件尚未移走或重命名,该文件将在请求结束时从临时目录中删除。

所以你的想法不会奏效。另一方面,在大多数操作系统中重命名文件是一种非常便宜的操作,因此没有充分的理由不立即移动临时文件。

答案 4 :(得分:1)

I think i can do it like <img src='fetchfromtmp.php?filename>. isn't it?

这会给您的服务器带来漏洞。不要忘记默认情况下临时文件夹也会保存会话文件。