Я пытаюсь скопировать кучу файлов ссылок на файлы изображений в данных mysql с одного сервера на другой, что похоже на работу cron, выполняемую в фоновом режиме, которая проверяет для внешних ссылок и скопировать его на сервер. Несколько ссылок, которые показывают, когда просматривается вручную, работают, но когда я пытаюсь скопировать файл через php-код, ничего не происходит. Он просто выводит пустую строку.Невозможно скопировать изображение с внешнего URL-адреса на мой сервер
Ниже приведены несколько ссылок, которые я пытаюсь скопировать на свой сервер.
- http://crm.propspace.com/watermark?c_id=1646&l_id=2300187&aid=1444765&id=14181282100524636&image=09_12_2014-16_53_34-1646-b15d08432d253ac710dc7bea47bf67c9.png
- http://crm.propspace.com/watermark?c_id=1646&l_id=2257894&aid=1444765&id=14169037278702926&image=25_11_2014-12_29_24-1646-67974878d8b7abd86d86c93527e15ebd.jpg
- http://crm.propspace.com/watermark?c_id=1646&l_id=2257894&aid=1444765&id=14169037278702926&image=25_11_2014-12_29_31-1646-0cf46efe5b2f89214001a2e050353736.jpg
- http://crm.propspace.com/watermark?c_id=1646&l_id=2282465&aid=1444765&id=14176053840492751&image=03_12_2014-16_36_29-1646-46cd5f89122e6899f8185e20bd942dd7.png
Звенья открывает и показывает изображение, но когда я пытаюсь скопировать через PHP код я получить только пустые данные. Я пробовал все типы копий, например
1. copy()
2. fopen()
3. file_get_contents()
4. curl_init()
но все закончилось пустой строкой или данными. Может ли кто-нибудь помочь мне решить эту проблему.
Методы, используемые для получения файла изображения
$img_link = "image from link";
$upload_link = "image to save link";
Method 1
------------------------------------------------------------------------------
$img_cont = file_get_contents($img_link);
file_put_contents($upload_link, $img_cont);
Method 2 - (This method gives me an image with 0 bytes)
------------------------------------------------------------------------------
copy($img_link, $upload_link);
Method 3
------------------------------------------------------------------------------
$img_file = fopen($img_link, 'r');
$img_data = '';
while($chunk = fread($img_file, 8192))
$img_data .= $chunk;
fclose($img_file);
Method 4
------------------------------------------------------------------------------
$img_stream = fopen($img_link, 'r');
$img_data = stream_get_contents($img_stream);
fclose($img_stream);
Method 5
------------------------------------------------------------------------------
$referer = "http://www.propspace.com/"
$headers = array(
'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg, image/png',
'Connection: Keep-Alive',
'Content-type: application/x-www-form-urlencoded;charset=UTF-8'
);
// Initialize cURL Connection
$conn = curl_init();
// Set cURL Options
curl_setopt($conn, CURLOPT_URL, $img_link);
// Add Headers
if(is_array($headers) && count($headers) > 0){
curl_setopt($conn, CURLOPT_HTTPHEADER, $headers);
}
// Add References
if($reference != "")
curl_setopt($conn, CURLOPT_REFERER, $reference);
// Other Options
curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
curl_setopt($conn, CURLOPT_BINARYTRANSFER, true);
curl_setopt($conn, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($conn, CURLOPT_FAILONERROR, true);
curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($conn, CURLOPT_HEADER, 0);
curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1);
// Execute Request
$img_cont = curl_exec($conn);
Спасибо.
Обновление: только что нашли вещь, которая составляет изображение, чтобы показать 0 размер. Он доступен только из сетей Дубая или ОАЭ. Как я могу заставить его работать?
может у добавить код? –
plz проверить сейчас я упомянул методы, которые я использовал ... –
если у вас проблема с размещением контента на сервере, тогда это может привести к разрешению проблем, значит у вас нужно установить 777 для папки, где вы пытаетесь сохранить изображение на сервере. –