如何使用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,所以我又觉得很愚蠢。谢谢你的帮助。