Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php';复制文件名中带有空格和句号的文件;什么是复制功能?_Php - Fatal编程技术网

如何使用php';复制文件名中带有空格和句号的文件;什么是复制功能?

如何使用php';复制文件名中带有空格和句号的文件;什么是复制功能?,php,Php,考虑以下代码片段: if (!copy($productdetails['img'][0], "../tempimages/".basename($product['img'][0]))) { //error and exit or whatever } 失败的文件名示例是“proView.MHL H.jpg” 文件正在从一个网站复制到另一个网站(Linux服务器)。两个输入都必须是变量,即我不能硬编码任何文件名。解决方案也不能使用任何shell命令 如果文件包含无效字符,例如空格,

考虑以下代码片段:

if (!copy($productdetails['img'][0], "../tempimages/".basename($product['img'][0]))) 
{
    //error and exit or whatever
}
失败的文件名示例是
“proView.MHL H.jpg”

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

如果文件包含无效字符,例如空格,甚至是奇数斜杠,那么我怎么能让文件继续复制呢

在这种情况下,在文件名中加空格和句号的糟糕做法是我无法控制的

多谢各位

编辑 很抱歉忘记了错误消息,如下所示


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

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


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

也许在写入文件之前对无效字符进行str_替换会有所帮助,我想您甚至可以用奇怪的名称读取该文件,最终您可以尝试在实际输入文件名上添加%cod(可能是%20)而不是spacesElaborate。你是不是把URL当作文件名卖了,却忘了提?空间本身不是文件函数的问题。那么,实际的错误消息是什么?看起来非常类似于推荐的url_编码,以确保空格实际上是字符?谢谢大家。。。让我试试这里提到的几件事,稍后再汇报。我可以发誓我试过%20,所以我又觉得很愚蠢。谢谢你的帮助。