का उपयोग कर दूरस्थ फ़ाइल कॉपी करें मैं अपने सर्वर पर एक दूरस्थ फ़ाइल (छवि पीएनजी, जीआईएफ, जेपीजी ...) की प्रतिलिपि बनाने की कोशिश कर रहा हूं। मैं Guzzle का उपयोग करता हूं क्योंकि मुझे कभी-कभी copy() के साथ 404 मिलते हैं, भले ही फ़ाइल मौजूद है और मुझे मूल लेख भी करना है। यह स्क्रिप्ट क्रॉन जॉब द्वारा ट्रिगर किए गए कमांड में लॉन्च की गई एक लंबी स्क्रिप्ट के भीतर है। मैं गुज़ल के लिए काफी नया हूं और मैंने सफलतापूर्वक छवि की प्रतिलिपि बनाई है लेकिन मेरी फाइलों में गलत माइम प्रकार है। मुझे यहाँ कुछ गलत करना होगा। कृपया मुझे ऐसा करने का एक अच्छा तरीका सुझाएं (कॉपी और माइम प्रकार की जांच की विफलता/विफलता सहित)। अगर फ़ाइल में कोई माइम प्रकार नहीं है तो मैं विवरण सूचनाओं के साथ एक त्रुटि पॉप अप करूंगा।Guzzle
यहाँ कोड है:
$remoteFilePath = 'http://example.com/path/to/file.jpg';
$localFilePath = '/home/www/path/to/file.jpg';
try {
$client = new Guzzle\Http\Client();
$response = $client->send($client->get($remoteFilePath)->setAuth('login', 'password'));
if ($response->getBody()->isReadable()) {
if ($response->getStatusCode()==200) {
// is this the proper way to retrieve mime type?
//$mime = array_shift(array_values($response->getHeaders()->get('Content-Type')));
file_put_contents ($localFilePath , $response->getBody()->getStream());
return true;
}
}
} catch (Exception $e) {
return $e->getMessage();
}
जब मैं यह मेरी माइम प्रकार के लिए सेट है कर आवेदन/x-खाली
यह भी तरह स्थिति स्वचालित रूप से होगा 200 guzzle से अलग है जब लग रहा है एक अपवाद फेंक दो। मैं इस व्यवहार को कैसे रोक सकता हूं और खुद को स्थिति की जांच कैसे कर सकता हूं ताकि मैं कस्टम त्रुटि संदेश कर सकूं?
संपादित करें: यह guzzle 3.X के लिए था अब यह कैसे आप
$client = new \GuzzleHttp\Client();
$client->get(
'http://path.to/remote.file',
[
'headers' => ['key'=>'value'],
'query' => ['param'=>'value'],
'auth' => ['username', 'password'],
'save_to' => '/path/to/local.file',
]);
या guzzle धारा का उपयोग कर (guzzle 6 के साथ साथ ही काम करता है) guzzle वी 4.x का उपयोग कर ऐसा कर सकते हैं है:
use GuzzleHttp\Stream;
$original = Stream\create(fopen('https://path.to/remote.file', 'r'));
$local = Stream\create(fopen('/path/to/local.file', 'w'));
$local->write($original->getContents());
यह बहुत अच्छा लग रहा है। Guzzle 4 का उपयोग करते समय क्या बेहतर/उचित समाधान है?
में आपकी आवश्यकताएं बहुत धन्यवाद!मैं कोशिश करूँगा मुझे आशा है कि यह माइम प्रकार (मूल माइम प्रकार) को बढ़ावा देता है। – Spir
किसी प्रकार के माइम-प्रकार का उपयोग करने के लिए डिस्क पर फ़ाइल को अपडेट करने के लिए आपको अपने अंत में कुछ करना होगा। मैंने इस बारे में कभी नहीं सुना है। –
नहीं, मेरा मतलब यह था कि मैं जिस तरह से कर रहा था वह माइम प्रकार को तोड़ दिया/ढीला कर दिया। आपका समाधान ठीक काम करता है। सहायता के लिए धन्यवाद। – Spir