无法打开流:HTTP请求失败!HTTP/1.1 400错误请求

mur*_*hna 11 http httpwebrequest

我正在访问其他网站的图片.当复制"一些(不是全部)"图像时,我收到"无法打开流:HTTP请求失败!HTTP/1.1 400错误请求"错误.这是我的代码.

$img=$_GET['img']; //another website url
$file=$img;

function getFileextension($file) {
       return end(explode(".", $file));
}
$fileext=getFileextension($file);
if($fileext=='jpg' || $fileext=='gif' || $fileext=='jpeg' || $fileext=='png' || $fileext=='x-png' || $fileext=='pjpeg'){
if($img!=''){
$rand_variable1=rand(10000,100000);
              $node_online_name1=$rand_variable1."image.".$fileext;

                $s=copy($img,"images/".$node_online_name1);
Run Code Online (Sandbox Code Playgroud)

}

Rav*_*mar 16

我认为preg_replace更有意义,因为它可以与最新版本的PHP一起使用,因为ereg_replace不适合我被弃用

$url = preg_replace("/ /", "%20", $url);
Run Code Online (Sandbox Code Playgroud)


小智 11

我有同样的问题,但它解决了

$url = str_replace(" ", "%20", $url);
Run Code Online (Sandbox Code Playgroud)

感谢Cello_Guy的帖子.


小智 6

我能想到的唯一问题是URL中很可能有空格,很可能是文件名中。url中的所有空格都需要转换为正确的编码,即%20。

如果您有这样的文件名:

http://www.somewhere.com/images/img 1.jpg”

您将收到上述错误,但是这样做:

http://www.somewhere.com/images/img%201.jpg

您应该遇到问题。

只需使用str_replace()替换空格(“”)即可获得正确的编码(“%20”)

看起来像这样:

$url = str_replace(" ", "%20", $url);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,str_replace()请查看PHP手册