【问题标题】:I have an entertaining "stuck file" issue我有一个有趣的“卡住文件”问题
【发布时间】:2012-03-30 20:32:34
【问题描述】:

我正在创建一个简单的图像管理工具,允许用户从服务器上传和删除图像。到目前为止,这是非常基本的东西。我发现上传文件名包含空格的文件会导致问题 - 名称中直到空格的所有内容都包含在上传的文件名中,但除此之外没有。问题不在于损坏的图像链接(我可以处理这些),而是无法使用我的删除工具或最简单的“取消链接”脚本删除图像。一旦我发现问题和原因,我联系了我们的支持人员,他们清除了两个问题文件。不幸的是,由于工作中的系统限制,我没有 FTP 访问权限。

现在您会认为一切都已解决,但没有。我在这个原型管理工具上添加了非常清晰的警告消息 - 用粗体红色文本 - 我通过电子邮件让我的老板和其他一些人知道该工具,清楚地解释带空格的文件名不起作用。那么……我的老板是做什么的?她上传了两个文件名有空格的文件。

所以在我有办法在脚本中添加一个白痴过滤器之前,谁能建议我如何才能删除这两个文件?我什至愿意删除填充的目录并重新创建它(那里的图像没有任何意义,只是随机的东西)。

如果没有关于如何解决这些问题的建议,有没有关于如何防止我的老板表现得像个白痴的建议,而不是切断她的手指?

【问题讨论】:

  • 为什么不能在上传文件之前验证输入以确保没有空格?
  • 将空格转换为下划线?
  • 砍掉老板的手指听起来是最好的选择!
  • 为了将来的知识,总是在上传图像时重新创建和重命名(使用 GD 或其他图像库)并删除原始文件,否则您将遇到比在未来(安全方面)。顺便说一句,这也将解决您的“文件名中的空间问题”

标签: php file upload delete-file corrupt


【解决方案1】:

我最好的答案是,正如你所说,将所有其他文件移动到另一个文件夹,删除文件夹,重新创建文件夹。 在那之后,我认为你需要在你的 php 中使用 urlencode 来处理文件名中的奇怪字符和空格。 一个可能对其他人有帮助的问题,您使用的是 Linux 还是 Windows?

作为测试,在它正常工作之前,请尝试写入您有权访问的驱动器,以便您可以玩直到它正常工作。然后切换到直播系统。这样您就不必致电支持人员来删除您的测试。

此外,您可以将所有空格替换为下划线作为快速修复。

【讨论】:

    【解决方案2】:

    使用unlink() 删除文件名中包含空格的文件时,请使用“\”转义空格。这仅适用于 Linux。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2013-01-13
      相关资源
      最近更新 更多