2012-03-21 8 views
15

मैं यूआरएल से एक छवि डाउनलोड करने के लिए PHP का उपयोग कैसे कर सकता हूं (उदाहरण: https://www.google.com/images/srpr/logo3w.png) फिर इसे सेव करें? यह वही है जो मैं अब तक आया था, यह मुझे 'file_put_contents' फ़ंक्शन में एक त्रुटि देता है।PHP कोड का उपयोग कर यूआरएल से छवि डाउनलोड करें?

<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 फ़ाइल का एक ही निर्देशिका में स्थित और लिखने योग्य है।

+0

4min में 4 उत्तरों !! आशा है कि आपकी समस्याएं जल्दी हल हो जाएंगी। –

+0

आपने कभी जवाब नहीं दिया है? कृपया उन उत्तरों को ऊपर उठाएं और स्वीकार करें जो आपकी मदद करते हैं। –

+0

@ रोहित मुझे खेद है, लेकिन मैं जवाब कैसे स्वीकार करूं? – Sarah

उत्तर

30

आप छवि को अपने मौजूदा कोड से सहेज नहीं सकते हैं क्योंकि आप फ़ाइल नाम प्रदान नहीं करते हैं।

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

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

उत्तर देने के लिए धन्यवाद। मैंने कोड में पहले से ही 'file_get_contents' का उपयोग किया है। यह ठीक काम करता है लेकिन मैं छवि को सहेज नहीं सकता। – Sarah

+0

@ सराह: मेरा बुरा, मैंने कोड को गलत तरीके से पढ़ा। इस बीच जवाब संपादित किया। – Jon

+0

यह त्रुटि मुझे मिलती है: '[function.file-put-content]: स्ट्रीम खोलने में विफल: सी 14: – Sarah

0

file_put_contents() फ़ाइल नाम नहीं पथ होने के लिए पहले पैरामीटर की आवश्यकता है: आप की तरह कुछ करने की ज़रूरत है।

1

आपकी त्रुटि क्या है? लेकिन आपके पास ऐसा करने का सही तरीका है जो आप करना चाहते हैं।

बस अपने कोड में ध्यान दें, मैं file_put_contents($img_path, देख सकता हूं लेकिन $img_path एक फ़ोल्डर का पथ है। करने के लिए क्या आप ?? करने के लिए लगा रहे हैं

उदाहरण

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

उत्तर देने के लिए धन्यवाद! तो मुझे कोड में छवि का नाम निर्दिष्ट करने की आवश्यकता है? – Sarah

+1

हां, आप अपने $ _POST ['text'] का उपयोग कर सकते हैं लेकिन खराब सामग्री से अवगत रहें। आपको अपने $ _POST को स्वच्छ करने की आवश्यकता है और फिर छवि का नाम प्राप्त करने के लिए उस पर काम करें। [बेसनेम] देखें (http://ca3.php.net/manual/fr/function.basename.php) यह शायद मदद कर सकता है। – NeeL

+0

जॉन के उत्तर को देखें;) – NeeL

0
file_put_contents($img_path, $content); 

: आप की तरह कुछ लिखने की ज़रूरत मुझे लगता है कि आपने get और put के साथ गलती की है। या फ़ाइल नाम और एक्सटेंशन सहित पूरा पथ निर्दिष्ट करने के लिए याद किया

5

आप सही पर सेट किया allow_url_fopen है:

 $url = 'http://example.com/image.php'; 
    $img = '/my/folder/flower.gif'; 
    file_put_contents($img, file_get_contents($url)); 

वरना उपयोग cURL:

 $ch = curl_init('http://example.com/image.php'); 
    $fp = fopen('/my/folder/flower.gif', 'wb'); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($fp); 
+0

मैंने कर्ल का उपयोग करने की कोशिश की, यह काम नहीं कर सका। वैसे भी धन्यवाद :) – Sarah

+0

मौसम की जांच करें जिसे आपने कर्ल सक्षम किया है .. – Pushparaj

+6

यह उत्तर परिचित दिखता है http://stackoverflow.com/questions/724391/saving-image-from-php-url – Dan

0

मैं स्वीकार किए जाते हैं जवाब देने के लिए एक शर्त जोड़ी गई निम्नानुसार छवि प्रकार की जांच करने के लिए,

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

उपरोक्त उदाहरण से मैं दिखाता हूं फ़ाइलों को डाउनलोड करने से पहले पीएनजी छवियों की जांच करने के लिए और अधिक सामग्री प्रकारों के लिए आप here पा सकते हैं।

संबंधित मुद्दे