如何使用php的复制功能复制文件名中包含空格和句点的文件?

时间:2014-12-10 15:53:27

标签: php

考虑以下代码片段:

if (!copy($productdetails['img'][0], "../tempimages/".basename($product['img'][0]))) 
{
    //error and exit or whatever
}

失败的文件名示例为"proView.MHL H.jpg"

正在将文件从一个网站复制到另一个网站(Linux服务器)。两个输入都有变量,即我不能对任何文件名进行硬编码。解决方案也不能使用任何shell命令。

如果文件包含空格等无效字符,甚至是奇怪的斜线,我怎么还能复制文件呢?假设它当然可以吗?

在这种情况下,在文件名中放置空格和句点的可怕做法不在我手中。

谢谢。

修改 很抱歉忘记了错误消息,如下所示

警告:复制(http://www.private.co.za/proView.MHL H.jpg):无法打开流:HTTP请求失败!第4行的C:\ websites \ schosting \ copytest.php中的HTTP / 1.1 400错误请求

1 个答案:

答案 0 :(得分:0)

GET /proView.MHL H.jpg HTTP/1.0不是有效的请求行,这是您的PHP生成的,这就是您收到400 Bad Request错误的原因。

解决方案是对文件进行适当的编码,尽管最简单的方法可能只是处理空格(str_replace(' ','%20',$productdetails['img'][0]))的情况,因为这是唯一真正的问题 - 注意。