का उपयोग कर एडब्ल्यूएस एस 3 बाल्टी में बाहरी फ़ाइल अपलोड करें मैं PHP एसडीके का उपयोग कर सीधे एक अमेज़ॅन एस 3 बाल्टी पर एक बाहरी यूआरएल से एक फाइल अपलोड करना चाहता हूं।PHP एसडीके
$s3 = new AmazonS3();
$response = $s3->create_object($bucket, $destination, array(
'fileUpload' => $source,
'length' => remote_filesize($source),
'contentType' => 'image/jpeg'
));
कहाँ समारोह remote_filesize निम्नलिखित है:: मैं निम्नलिखित कोड के साथ ऐसा करने में कामयाब रहे
function remote_filesize($url) {
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s([0-9].+?)\s/';
$count = preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : "unknown";
}
हालांकि, यह अच्छा होगा अगर मैं कब से अमेज़न पर अपलोड फ़ाइल आकार की स्थापना को छोड़ सकता है यह मुझे अपने सर्वर पर एक यात्रा बचाएगा। लेकिन अगर मैं $ s3-> create_object फ़ंक्शन में 'लंबाई' प्रॉपर्टी को सेट करना हटा देता हूं, तो मुझे यह कहते हुए एक त्रुटि मिलती है कि 'स्ट्रीमिंग अपलोड के लिए स्ट्रीम आकार निर्धारित नहीं किया जा सकता है।' इस समस्या को हल करने के लिए कोई विचार?
मेरे पास रिमोट सर्वर/होस्ट पर कोई नियंत्रण नहीं है। मैंने पहले ही सुझाई गई विधि का प्रयास किया है, लेकिन भले ही यह हेडर का अनुरोध करता है, फिर भी यह प्रक्रिया को धीमा कर देता है। मैंने अपने सर्वर को अमेज़ॅन में भी स्थानांतरित करने का निर्णय लिया (उसी उपलब्धता क्षेत्र में बाल्टी के रूप में), और अब यह गति तक है। – Bjorn