Могу ли я получить изображение с веб-сайта, которым я не владею, используя jquery? - PullRequest
0 голосов
/ 21 марта 2020

Я хотел бы получить DOM другого веб-сайта и выполнить поиск по нему для загрузки изображения, но это дает мне ошибки политики CORS, и я хотел бы узнать другой способ сделать это

  $.get({
    url: "https://www.example.com",
    method: "get",
    success: function(data) {
      var html = $.parseHTML(data),
        img = $(html).find("img"),
        len = img.length;
      if (len > 0) {
        var src = img.attr("src");
      } else {
        console.log("Image not found");
      }
      console.log(src);
    }
  });

Исходное сообщение:

Я хочу загрузить изображение с другого веб-сайта (который мне не принадлежит), я могу просмотреть этот веб-сайт и сказал публично изображение, однако попытка сделать $.get() с URL дает мне ошибку политики CORS, разве нет способа сделать это?

1 Ответ

0 голосов
/ 21 марта 2020

Вы можете отправить запрос с cURL на сервер. Или вы можете использовать некоторый язык программирования, который вы используете (и не указали в своем вопросе) для отправки запроса. Пример:

<?php
$img[]='http://images.rottentomatoescdn.com/images/redesign/poster_default.gif';

foreach($img as $i){
echo $i;
    save_image($i);
    // if(getimagesize(basename($i))){
        // echo '<h3 style="color: green;">Image ' . basename($i) . ' Downloaded OK</h3>';
    // }else{
        // echo '<h3 style="color: red;">Image ' . basename($i) . ' Download Failed</h3>';
    // }
}

//Alternative Image Saving Using cURL seeing as allow_url_fopen is disabled - bummer
function save_image($img,$fullpath='basename'){
    if($fullpath=='basename'){
        $fullpath = basename($img);
    }
    $ch = curl_init ($img);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec($ch);
    curl_close ($ch);
    if(file_exists($fullpath)){
        unlink($fullpath);
    }
    $fp = fopen($fullpath,'x');
    fwrite($fp, $rawdata);
    fclose($fp);
}
?>

Взят отсюда: https://curl.haxx.se/docs/httpscripting.html

...