【问题标题】:Download image from URL using php code? [duplicate]使用 php 代码从 URL 下载图像? [复制]
【发布时间】:2012-04-05 18:51:50
【问题描述】:

如何使用 php 从 URL 下载图像(例如:https://www.google.com/images/srpr/logo3w.png)然后保存? 这是我到目前为止想出的,它在'file_put_contents'函数中给了我一个错误。

<form method="post" action="">
<textarea name="text" cols="60" rows="10">
</textarea><br/>
<input type="submit" class="button" value="submit" />
</form>

<?php
    $img = "no image";
    if (isset($_POST['text']))
    {
    $content = file_get_contents($_POST['text']);
    $img_path = '/images/';
    file_put_contents($img_path, $content);    
    $img = "<img src=\"".$img_path."\"/>";
    }
    echo $img;
?>

它给了我错误:

[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php

/images/目录与php文件同目录,可写。

【问题讨论】:

  • 1 分钟内回答 4 个!!希望您的问题很快得到解决。
  • 您从未接受过任何答案?请投票并接受对您有帮助的答案。
  • @Rohit 很抱歉,我该如何接受答案?
  • @Rohit ok 知道如何接受 :)

标签: php image url


【解决方案1】:

您无法使用现有代码保存图像,因为您没有提供文件名。您需要执行以下操作:

$filenameIn  = $_POST['text'];
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']);

$contentOrFalseOnFailure   = file_get_contents($filenameIn);
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure);

【讨论】:

  • 感谢您的回复。我已经在代码中使用了file_get_contents。它工作正常,但我无法保存图像。
  • @Sarah:我的错,我看错了代码。同时编辑了答案。
  • 这是我得到的错误:[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php on line 14
  • @Sarah: 目录/images/ 存在吗?你的网络服务器可以写吗?基本调试。
  • @Sarah:那么/images/ 不存在,但./images/ 存在。我编辑了答案以匹配。
【解决方案2】:

你的错误是什么?但你有正确的方法去做你想做的事。

请注意您的代码,我可以看到 file_put_contents($img_path,$img_path 是文件夹的路径。 你需要写这样的东西:

示例

$img_path="home/downloads/my_images";
file_put_contents($img_path."/flower.jpg");

【讨论】:

  • 感谢您的回复!那么需要在代码中指定图片名称吗?
  • 是的,您可以使用您的 $_POST['text'] 但要注意不良内容。您需要清理您的 $_POST ,然后对其进行处理以获取图像的名称。看看basename 可能会有帮助。
【解决方案3】:
file_put_contents($img_path, $content); 

你要做什么?我认为你在getput 上犯了一个错误。或错过指定完整路径,包括文件名和扩展名

【讨论】:

    【解决方案4】:

    file_put_contents() 要求第一个参数是文件名而不是路径。

    【讨论】:

      【解决方案5】:

      我在接受的答案中添加了一个条件来检查图像类型,如下所示,

       if (exif_imagetype($_POST['text']) == IMAGETYPE_PNG) {
           $filename = './images/'.basename($_POST['text']);
           file_put_contents($filename, $content);
       }
      

      从上面的示例中,我展示了如何在下载文件之前检查 png 图像,对于更多内容类型,您可以找到 here

      【讨论】:

        猜你喜欢
        • 2014-09-18
        • 2021-09-27
        • 2014-10-27
        • 1970-01-01
        • 2017-04-29
        • 2022-09-30
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        相关资源
        最近更新 更多